刚刚解决了一个问题校对我的帖子,太棒了! :P
目前我有这段代码:
# To externally redirect /file.php?page=cat/subcat/page to /cat/subcat/page
RewriteCond %{THE_REQUEST} file.php?page=(.*) [NC]
RewriteRule ^ %1 [R=301,L]
# To internally forward /cat/subcat/page to /file.php?page=cat/subcat/page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/?$ file.php?page=$1 [L]
首先,我希望它在语法上是正确/有效的...我在正则表达式中吮吸!
现在,访问:
/猫/ SUBCAT /页
正常工作
但是,如果我访问
/file.php?page=cat/subcat/page
页面不会重定向到cat / subcat / page。
内部/外部重定向,正则表达式和.htaccess整体混淆了我,所以我不确定我应该在哪里寻找问题。如果它意味着什么,htaccess和file.php文件都位于www.website.com/test/,而不是网站根目录。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
这是因为你的正则表达式在第一条规则中是错误的。
请尝试以下规则:
RewriteEngine On
# To externally redirect /file.php?page=cat/subcat/page to /cat/subcat/page
RewriteCond %{THE_REQUEST} /file\.php\?page=([^&\s]+) [NC]
RewriteRule ^ /%1? [R=301,L]
# To internally forward /cat/subcat/page to /file.php?page=cat/subcat/page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)/?$ file.php?page=$1 [L,QSA]