这个RewriteRule对.htaccess有什么不对

时间:2014-11-24 15:10:16

标签: regex apache .htaccess mod-rewrite redirect

我想改写我的网址:

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。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您需要将此规则放在RewriteBase

中,以使用正确的/users/.htaccess
RewriteEngine On
RewriteBase /users/

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

答案 1 :(得分: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

你基本上说“允许最多10个0-9a-z的角色”,然后传入17个字符并包含不允许的字符。所以你的整个模式都会拒绝匹配。