2016-12-03 64 views
0

斜線不能被重定向

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=301,L,NE] 

然後我嘗試用另一種略有不同的代碼

RewriteEngine On 
RewriteBase/
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+ 
RewriteRule ^(.+)\.[a-zA-Z0-9]+$ $1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

兩個代碼產生同樣的問題,如果嘗試訪問

  1. domain.com/other/content.php去domain.com/other/content(200 response)

現在這裏是奇怪的行爲,如果嘗試訪問

  • domain.com/other/content.php/進入domain.com/other/content.php/(200響應不404)

  • domain.com/other/content.php/any-word去domain.com/other/content.php/any-word(200反應不是404錯誤)

  • 所有其他重定向工作完美,除了這問題。 任何一個可以幫助與兩個代碼,我需要這兩個代碼整改,因爲我有兩個不同的網站既htaccess的規則。

    +0

    我下面寫一個答案,我發現在http://stackoverflow.com/questions/31460693/htaccess的去除的尾隨斜槓後的文件擴展名。如果我添加此與上面的代碼,它的工作,但我保留這個代碼單獨,它不工作。任何人都可以解釋爲什麼並使用這兩種代碼可能會使併發症?請看我的回答 – user3384093

    回答

    0

    如果我保留兩個代碼

    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^([^\.]+)$ $1.php [NC,L] 
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC] 
    RewriteRule^/%1 [R=301,L,NE] 
    

    另外,我添加新的代碼,然後它工作

    RewriteEngine On 
    RewriteCond %{THE_REQUEST} /([^.]+)\.php/? [NC] 
    RewriteRule^/%1/ [NC,R,L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^([^/]+)/?$ /$1.php [L,NC] 
    
    +0

    這是否會造成新的併發症? – user3384093