我试图像这样隐藏url中的子文件夹:
localhost / imo / public_html / public / ajuda.php 至 localhost / imo / ajuda
如果文件存在,它运行良好,如果不是,我得到这样的禁止访问:
您无权访问 /imo/public_html/public/public_html/public/public_html...public/contacto.php.php.php.php.php.php.php.php.php.php 在这台服务器上。
这是我的htaccess文件:
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteRule ^$ public_html/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ public_html/public/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L,QSA,NC]
</IfModule>
我已经在stackoverflow上搜索了,似乎规则导致循环但是到目前为止提供的解决方案对我的情况不起作用。任何帮助都会非常苛刻。
谢谢。
更新 感谢@Matthijs Otterloo,这是工作的htaccess脚本:
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteRule ^$ public_html/public/
RewriteCond %{REQUEST_URI} !^/public_html/public
RewriteRule ^/?([^/]+)$ /public_html/public/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L,QSA,NC]
</IfModule>
答案 0 :(得分:0)
在.htaccess
文件中尝试以下内容:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public_html/public
RewriteRule ^/?([^/]+)$ /public_html/public/$1 [L]
最好的方法是设置propper虚拟主机,但这应该解决它。