2013-11-21 177 views
1

我想使用.htaccess重定向URL。我有以下代碼:使用.htaccess重定向URL

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?action=$1&id=$2 

這是工作正常,如果我不使用網址中的點。但是,如果我想要訪問,例如這個URL:

load/com.example.unique.id 

然後我會得到錯誤404。當然,我能理解爲什麼是這樣的:我還沒有包括在我的表達點。但是,如果我有它,我會得到錯誤500

我試着包括這樣的表達點:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-\.]+)$ index.php?action=$1&id=$2 

任何想法,爲什麼會出現這種情況?謝謝!

回答

2

我認爲這個問題是與 ' - ' 在[A-ZA-Z0-9_-],試試這個:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_\-.]+)$ index.php?action=$1&id=$2 
1

您可以使用點但連字符需要在字符類中最後或最初的位置以避免轉義。正確的正則表達式基於規則將是這樣的:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w.-]+)/([\w.-]+)/?$ index.php?action=$1&id=$2 [L,QSA]