Jam*_*nor 6 .htaccess mod-rewrite
我希望我的网址如下所示
www.website.com/home&foo=bar&hello=world
我只想要改变第一个get参数
然而,实际的"幕后"网址是这样的
www.website.com/index.php?page=home&foo=bar&hello=world
我找到的所有教程都会更改所有参数.
任何帮助非常感谢!
Rav*_*yal 37
将其添加到您.htaccess的Web根/目录中
RewriteEngine on
RewriteBase /
RewriteRule ^home$ index.php?page=home&%{QUERY_STRING} [NC,L]
Run Code Online (Sandbox Code Playgroud)
如果您希望这适用于所有页面,即/any-page获得服务index.php?page=any-page然后使用
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d # not a dir
RewriteCond %{REQUEST_FILENAME} !-f # not a file
RewriteRule ^(.*)$ index.php?page=$1&%{QUERY_STRING} [NC,L]
Run Code Online (Sandbox Code Playgroud)
A RewriteRule具有以下语法
RewriteRule [Pattern] [Substitution] [Flags]
Run Code Online (Sandbox Code Playgroud)
该模式可以使用一个正则表达式和抵靠URL的主机名和端口之后的部分相匹配(与.htaccess放置在根目录),但任何查询字符串之前.
该模式^home$使第一个规则与传入的URL匹配www.website.com/home.在%{QUERY_STRING}简单地捕获并追加后的任何/home?以内部取代的URL index.php?page=home.
该标志NC只是使规则不区分大小写,因此它匹配/Home或/HOME同样.并L简单地将其标记为最后一次,即如果下面定义了任何其他规则,则重写应停在此处.
这个更通用,即如果你的所有网站页面都遵循这个URL模式,那么我们可以只使用这个通用的规则,而不是写几个规则,每个页面一个.
将.*在模式^(.*)$匹配/any-page-name和括号帮助捕捉any-page-name部分作为$1在替换URL所使用的变量index.php?page=$1.的&在page=home&与page=$1&仅仅是多个查询字符串字段值对之间使用的隔板.
最后,%{QUERY_STRING}和[NC,L]标志的工作方式与规则一相同.
| 归档时间: |
|
| 查看次数: |
33668 次 |
| 最近记录: |