首页 > 解决方案 > htaccess 在子目录中无法正常工作

问题描述

我知道在堆栈溢出和许多其他站点中有很多关于此的问题。但我无法正确配置它。所以我再次在这里发布问题。我有一台服务器,里面有很多域。我最后写了一个htaccess文件来防止.php,但这对所有目录都有效。我希望它只在特定域中工作。

例如:假设我在 /var/www/html/ 中有两个目录。一个是 proj1/,另一个是 proj2/。我只想为 proj2/ 而不是 proj1/ 编写重写规则。如果我将 htaccess 文件放在 /var/www/html/ 目录中的所有目录都获取规则。如果我将 htaccess 文件放在 proj1/ 目录中,它会进行一些虚假的重定向。那么,如何让 htaccess 运行它的规则仅适用于 proj1/ 目录。我的 htaccess 文件

Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [NC,END]

我什至尝试更改 rewritebase,但它无法正常运行。谢谢

假设如果我将此 htaccess 文件保存在 proj1/ 目录中并调用任何页面,例如 localhost/proj1/login 它会将我重定向到 localhost/login (实际上不存在。

标签: apache.htaccess

解决方案


RewriteBase很少按您想要的方式工作。最好不要使用它:

Options -MultiViews
RewriteEngine on
RewriteRule ^(.+)\.php$ /proj1/$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /proj1/$1.php [NC,END]

推荐阅读