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。
答案 0 :(得分:0)
这是因为此行中的正则表达式不正确:
RewriteRule ^([^/]*)$ /?a=$1 [L]
在找到/
之前匹配0个或多个字符。将其更改为:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /?a=$1 [L]
问题将得到解决。在我的回答中,我使用了斜杠选项,因此支持/realurlhere/
和/realurlhere
。