dousao2186 2014-10-22 03:23
浏览 93
已采纳

从根文件夹中的htaccess规则中排除子目录

I am using below htaccess rules on my website's root folder to remove the files extensions and add trailing slash at the end. However, I'd like to exclude a sub-directory /sub-dir/ from the root folder htaccess rules. I tried to add another htaccess to the /sub-dir/ folder and put RewriteOptions inherit or RewriteEngine Off in the file but none of them works.

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]

Any suggestion is highly appreciated.

Thanks

  • 写回答

1条回答 默认 最新

  • duanjiao4763 2014-10-22 03:39
    关注

    You can either try adding an htaccess file in your subdirectory that has only this:

    RewriteEngine On
    RewriteRule ^ - [L]
    

    Without any inherit options. Inherit means you want the rules in the parent htaccess to also be applied along with any rules in the subdirectory's htaccess file. With this, you're making sure the rewrite engine is on and making a "do nothing" pass-through rule.

    Otherwise, you can add the passthrough at the top of the root's htaccess file (right below RewriteBase):

    RewriteRule ^sub-dir/ - [L]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?