无法使用.htaccess隐藏子文件夹

时间:2015-06-24 02:22:09

标签: php apache .htaccess

我正在尝试删除我的网址的url.com/php/(/ php /)部分,并尝试使用以下行的htaccess

RewriteCond %{REQUEST_URI} !^/php
RewriteRule (.*) /php/$1 [QSA,L]

但在服务器上收到此错误:

在此服务器上找不到请求的URL /php/index.php。

实际上在每个场景中添加/ php /在我的url.com地址之后。我尝试了大量其他线程都有不同的结果,但这个实际上从网址中删除/ php /,只是在这种情况下假设/ php /每次都属于那里。关于如何解决这个问题的任何想法?

由于

编辑:现在我想到了,我实际上是在尝试重写整个文件夹树,以便只显示文件名和网址。

所以url.com/php/ra/file.php?id=1显示为url.com/file.php?id=1

我的整个htaccess文件可以消除混淆:

# Use PHP5.4 Single php.ini as default
AddHandler application/x-httpd-php54s .php
Options -Indexes +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://urlreplaced.com/$1 [R,L]
RewriteCond %{REQUEST_URI} !^/php
RewriteRule (.*) /php/$1 [QSA,L]

edit2:为混乱道歉。

我的网站网址是:https://www.url.com

目前/ php /是下一级别的 在其中是/ ea /,/ hbu /,/ hc /,/ ra /,/ st /,和/ tut /

php包含很多文件,但都以.php结尾并接受GET vars

以及每个目录中可能包含100个.php文件。如果我理解到目前为止我已经阅读过关于这个问题的内容,那么在子目录覆盖了内部文件之后,$1是不是正确的?{/ p>

我需要通过/ php /目录的任何和所有文件在URL中显示为url.com/example.php?var=x,无论过去的子目录是什么。

因此,无论example.php是存在于/ php / ra还是/ php / hbu还是普通/ php,它仍然等于url.com/example.php

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

根据您在编辑中提供的网址,如果您只想从网址中删除PHP路径并保留文件名和查询字符串,则可以执行此操作。

 RewriteEngine On
 #rewrite http to https
 RewriteCond %{HTTPS} off
 RewriteRule ^(.*)$ https://urlreplaced.com/$1 [R=301,L]
 #if full real URL is used, redirect to file.php
 RewriteCond %{THE_REQUEST} [A-Z]{3,}\ /+php/ra/file\.php\?id=([^&\ ]+)
 RewriteRule ^ file.php?id=%1 [R=301,L]
 #if request is a real file or directory do nothing
 RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILEMAME} -d
 RewriteRule ^ - [L]
 #rewrite full path to file.php
 RewriteCond %{QUERY_STRING} ^id=(.+)$
 RewriteRule ^file\.php$ /php/ra/file.php?id=%1 [L]

现在你的网址就像这样。

http://example.com/file.php?id=30