2013-07-18 60 views
0
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] 

這是假設,使所有的網址搜索引擎和用戶友好的,但問題是,如果有人去http://pattersoncode.ca/realurlhere/但其重定向到即使它是一個真正的目錄中的錯誤頁面。無論如何阻止這個?它一定認爲他們正在嘗試去http://pattersoncode.ca?a=realurlheremod_rewrite的改變真實的URL

回答

0

這是因爲在這一行不正確的正則表達式的發生:

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

這是匹配0個或多個字符,直到/被發現。將其更改爲:

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

問題將被修復。在我的回答中,我做了斜線選項,因此/realurlhere//realurlhere都將被支持。