当文件不存在时,HTACCESS会将下划线重写为连字符

时间:2014-09-11 10:36:19

标签: .htaccess url url-rewriting conditional-statements

好的,所以我已经搜索了其他人的回答问题,但似乎什么都没有用?我想要的是将包含下划线的所有.html文件重定向到使用连字符的相同文件名,除非下划线文件存在。

这是我目前的.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*).html$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*)$ /testing/$1-$2 [L,R=302]

结果: 1.当我导航到/this_file_does_not_exist.html时,我被重写为/testing/this-file-does-not-exist.html

  1. 当我导航到/this_file_does_exist.html时,我仍然会改写为/testing/this-file-does-exist.html
  2. 我哪里错了?

1 个答案:

答案 0 :(得分:0)

RewriteCond需要为每个RewriteRule重复或包含在单独的规则中:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([^_]*)_([^_]*_.*?\.html)$ $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*?\.html)$ /testing/$1-$2 [L,R=302]