mod_rewrite更改真实的URL

时间:2013-07-18 00:25:41

标签: .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /?a=$1 [L]
RewriteRule ^([^/]*)/([^/]*)$ /?a=$1&app=$2 [L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

这假设使所有URL搜索引擎和用户友好,但问题是,如果有人前往http://pattersoncode.ca/realurlhere/,它会将它们重定向到错误页面,即使它是真正的目录。反正有没有阻止这个?它一定是在考虑他们试图去http://pattersoncode.ca?a=realurlhere

1 个答案:

答案 0 :(得分:0)

这是因为此行中的正则表达式不正确:

RewriteRule ^([^/]*)$ /?a=$1 [L]

在找到/之前匹配0个或多个字符。将其更改为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /?a=$1 [L]

问题将得到解决。在我的回答中,我使用了斜杠选项,因此支持/realurlhere//realurlhere

相关问题