Apache 使用htaccess重定向到特定的子文件夹
以下是我的文件夹结构:Apache 使用htaccess重定向到特定的子文件夹,apache,.htaccess,mod-rewrite,url-rewriting,subdirectory,Apache,.htaccess,Mod Rewrite,Url Rewriting,Subdirectory,以下是我的文件夹结构: 网站 主要的 sub1 sub2 我希望能够通过URLwebsite.com/sub1访问子文件夹sub1,我通过在网站/下的.htaccess中添加以下内容来实现此目的: RewriteCond %{REQUEST_URI} /sub1/(.*)$ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*)$ main/sub1/in
-
网站
-
主要的
- sub1
- sub2
-
主要的
website.com/sub1
访问子文件夹sub1
,我通过在网站/
下的.htaccess
中添加以下内容来实现此目的:
RewriteCond %{REQUEST_URI} /sub1/(.*)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ main/sub1/index.php?view=$1 [QSA,L]
我的问题是,尽管可以访问index.php
,但它一直都被访问,即使是.js
和.css
文件也是如此。因此,我尝试在之前添加以下规则(尽管我认为我之前通过我的!-f
条件排除了这些文件):
但正如你所猜测的,运气不好,即使我删除了另一个块,也没有实际文件进入第二个块。试试:
RewriteCond %{REQUEST_URI} ^/sub1/(.*)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/main/%{REQUEST_URI} -f
RewriteRule ^(.*)$ /main/$1 [L]
那么你的老规矩是:
RewriteCond %{REQUEST_URI} /sub1/(.*)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ main/sub1/index.php?view=$1 [QSA,L]
谢谢你,效果很好!我甚至可以在
main
中的其他子文件夹中重复使用它;我进行了测试,我只需要在我的“旧规则”中做一些调整就可以了。我认为你的文件根和/主要/想法非常棒。
RewriteCond %{REQUEST_URI} /sub1/(.*)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ main/sub1/index.php?view=$1 [QSA,L]