我正在其他地方测试下面的规则并且它可以正常工作,但在我的系统上却不行(centos 7,Apache/2.4.6)[我将我的域名更改为 domain.com 以便在此处发布]
该规则的目的是重写http://domain.com/story.php?id=xxxx到http://domain.com/story.php?id=xxxx
请注意,wordpress 规则有效,但这个无效
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=([^&]+) [NC]
RewriteRule ^story\.php$ /?p=%1 [L,NC,R=302]
我的 .htaccess 文件如下(以防有冲突的规则)
RewriteBase /
Redirect 301 /forums http://domainforums.com
Options -Indexes
RewriteRule ^([a-z]{2}|zh-CN|zh-TW)/forums/(.*)$ /forums/$2 [R=301,L,QSA]
RewriteRule ^([a-z]{2}|zh-CN|zh-TW)/(.*)$ http://$1.domain.com/$2 [R=301,L,QSA]
RewriteRule ^(server-info|mv-server-status) - [L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
答案1
规则末尾使用的 $ 符号如下:
^story\.php$
表示匹配结束,因此该规则只对这样的请求起作用:
http://domain.com/story.php
但不能用于其他目的,例如:
http://domain.com/story.php?id=1