我正在尝试删除我的网址的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
感谢您的帮助
答案 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