2014-09-11 29 views
1

好吧,我已經搜查了其他人的回答問題,但似乎沒有任何工作?我想要的是將包含下劃線的所有.html文件重定向到使用連字符的相同文件名,除非下劃線文件存在。HTACCESS Rewite下劃線到連字符當文件不存在

這裏是我當前的.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

  • 當我瀏覽到/this_file_does_exist.html我仍然改寫爲/testing/this-file-does-exist.html
  • 任何人都可以看到我是進去克錯了?

    非常感謝您的幫助!要重複

    回答

    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] 
    
    +0

    感謝您的輸入 - 可惜的是,現在的問題是相反的..但它的檢測,當一個文件存在不復寫它不.. – Chuckun 2014-09-11 10:50:47

    +0

    我修復了一個小錯字。再試一次。 – anubhava 2014-09-11 10:58:21

    +0

    啊,是的,我可以在比較兩者之後看到現在的問題。你是我今天的救星 - 謝謝! – Chuckun 2014-09-11 11:07:56