使用.htaccess重写网址会导致404 NOT FOUND

时间:2016-12-20 09:58:12

标签: javascript php apache .htaccess mod-rewrite

这是我的htaccess文件

RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.in$
RewriteRule ^/?$ "https\:\/\/www\.mysite\.in\/" [R=301,L]


RewriteRule \.(css|jpeg|gif|png|js|ico|img|chat)$ - [L]
RewriteRule ^detail/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301]

#RewriteRule ^$ index.php?name=kal

RewriteRule ^([a-zA-Z0-9]+)$ index.php?name=$1
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?name=$1

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

当我请求 https://www.mysite.in/myname/myplace 时效果正常

但是当我请求 https://www.mysite.in/myname-n-m/myplace 时,它会找不到404错误

基本上我的第一个参数是 - (连字符),任何解决方案?

2 个答案:

答案 0 :(得分:1)

重写规则包含:[a-zA-Z0-9]+,其中包含:字母+数字。因此,将其更改为:[a-zA-Z0-9\-]+也包含连字符

答案 1 :(得分:1)

你有没有试过这个......

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