2014-11-24 37 views
1

我要重寫我的網址:哪些錯誤與此重寫規則對的.htaccess

localhost/users/045da557b7 

localhost/users/index.html?userID=045da557b7 

,這裏是我的.htaccess

RewriteEngine On 
RewriteRule ^/([0-9a-z]{10})/$ /index.html?userID=$1 [L] 

但瀏覽器給我404回來。

我在httpd.conf中取消了重寫mod。 謝謝你的幫助。

+0

明顯的問題,但''.htaccess'位於'/ users /'? – sjagr 2014-11-24 15:13:29

+0

使用正則表達式,分隔符不需要是第一個和最後一個字符嗎?例如'/ ^([0-9a-z] {10})$ /' 此外,你試圖匹配的部分不會是被傳遞的字符串的開始,所以不確定'^'是正確。 也許'/(?<= [\ /])([0-9a-z] {10})$ /'會更好。 (不知道你是否可以在這裏使用後臺功能) – 2014-11-24 15:13:54

回答

1

你需要通過將該規則/users/.htaccess使用正確的RewriteBase

RewriteEngine On 
RewriteBase /users/ 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9a-z]+)/?$ index.html?userID=$1 [L,QSA,NC] 
+0

工作得很好。我也必須啓用AllowOverride All;)謝謝 – Kronos 2014-11-24 15:25:28

+0

不客氣,很高興它解決了。 – anubhava 2014-11-24 15:26:41

+0

只是一個問題。我可以用這種方法讀取仍然帶有JavaScript的GET參數嗎?它似乎不工作。 – Kronos 2014-11-24 15:32:23

0
^/([0-9a-z]){10}/$ 
a    b 
    cccccccc dddd 

a - anchor pattern to start of string 
b - anchor pattern to end of string 
c - allow numbers and lower case alphabet 
d - must have exactly 10 characters 


users/045da557b7 

16 characters (past your limit of 10) 
contains a/- not in your list of allowed characters 

你基本上是說 「允許在0-9A-Z的最多10個charccters」,然後在17傳遞字符幷包含不允許的字符。所以你的整個模式會拒絕匹配。