2014-10-22 77 views
1

我在我的網站的根文件夾下使用以下htaccess規則刪除文件擴展名並在末尾添加尾部斜槓。但是,我想從根文件夾htaccess規則中排除子目錄/ sub-dir /。我試圖添加另一個htaccess到/ sub-dir /文件夾,並將RewriteOptions inheritRewriteEngine Off放入文件中,但它們都不起作用。從根文件夾中的htaccess規則排除子目錄

RewriteEngine On 
RewriteBase/

# redirect from non-www to www 
RewriteCond %{HTTP_HOST} ^mywebsite.com.au$ [NC] 
RewriteRule ^(.*)$ http://www.mywebsite.com.au/$1 [R=301,L] 

RewriteCond %{REQUEST_URI} ^/index.php$ 
RewriteRule ^(.*)index.php$ http://www.mywebsite.com.au/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php 
RewriteRule (.*)\.php$ /$1/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)/$ $1.php [L] 

# Remove trailing slash: 
RewriteRule (.*)/$ $1 [L] 

# Now test without the trailing slash: 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule . %{REQUEST_FILENAME}.php [QSA,L] 

任何建議,非常感謝。

感謝

+0

你看看這裏? http://stackoverflow.com/a/13842523/2696690 – Winter 2014-10-22 03:24:41

+0

@Winter是的。我試過了。我認爲它不起作用,因爲我的htaccess文件的規則是不同的。 – Webnerdoz 2014-10-22 03:39:51

回答

5

您可以嘗試添加在你的子目錄中有只有這一個htaccess文件:

RewriteEngine On 
RewriteRule^- [L] 

無任何繼承選項。繼承意味着您希望父htaccess中的規則也可以與子目錄的htaccess文件中的任何規則一起應用。有了這個,你可以確保重寫引擎處於打開狀態,並制定一個「無所作爲」的傳遞規則。

否則,您可以在根的htaccess文件(右下方RewriteBase)的頂部添加直通:

RewriteRule ^sub-dir/ - [L] 
+0

我試過{RewriteEngine On RewriteRule^- [L]},它的功能就像一個魅力。謝謝你 – Webnerdoz 2014-10-22 03:44:39

+0

謝謝!它爲我工作! – ppalancica 2015-01-10 03:59:54

+0

謝謝,好的:) – 2017-01-06 13:08:30

相關問題