我有以下网址:
http://www.mysite.com/test/index.php?topic=rules
我想将其重写为:
http://www.mysite.com/test/topic/rules
我尝试了以下操作:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^topic/([a-zA-Z0-9]+)/$ index.php?topic=$1
什么都没做。我使用第三方网站生成此重写代码,所以可能不正确,我不知道。Apache 中是否有任何原因可能导致此操作不起作用?
答案1
您在 URL 中遗漏了/test/
。规则中的前导 ^ 表示“路径的开始”。您可能需要:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/test/topic/([a-zA-Z0-9]+)/$ /test/index.php?topic=$1
或者类似的东西。
答案2
您无法匹配RewriteRule中的查询字符串,因此您需要使用RewriteCond。
RewriteCond %{QUERY_STRING} topic=(.*)
RewriteRule test/index.php test/topic/%1? [L]