我正在尝试处理以下内容:
删除.php
如果我有:www.mydomain.com/test.php?a = 1 我想在这里查看文件app / controllers / test.php的存在,并将字符串app / controllers / text.php传递给./index.php并从test.php中删除.php
或
如果我有:www.mydomain.com/dir1/test.php?a = 1 我想在这里查看文件app / dir1 / controllers / test.php的存在 并将字符串app / dir1 / controllers / text.php传递给./index.php并从test.php中删除.php
或
如果我有:www.mydomain.com/dir1/dir2/dir3/test.php?a=1 我想在这里查看文件app / dir1 / dir2 / dir3 / controllers / test.php的存在,并将字符串app / dir1 / dir2 / dir3 / controllers / text.php传递给./index.php并删除.php来自test.php
正如您所见,sub dir需要是动态的,因此需要进行DIR和FILE检查。
所以......如果php文件test.php存在于任何目录级别
如果它不存在(这部分我已经工作了) 我想继续运行我已经拥有的htaccess。 这将假设index.php在目录路径,并重定向到404,如果没有找到
我希望它看起来像这样:
Options +FollowSymlinks
RewriteEngine On
#Rewrite Conditions to detect actual file at path adding app/controllers
#to front of url string as this shouldn't be viewable
# -- CODE I AM STUCK WORKING OUT --
# [L] to prevent proceeding with htaccess if condition met and rewrite done
# Existing code below to run if above not found
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^(.*)$ ./index.php?p=$1 [L,NC,QSA]
由于
d
答案 0 :(得分:1)
要从网址中删除.php
,您需要重定向:
RewriteRule (.*)\.php$ $1 [QSA,R=301]
现在要应用你的实际逻辑,我认为这应该有效:
RewriteRule (.*)/([^/]+)$ index.php?file=app/$1/controllers/$2.php [QSA]
然后你必须让PHP检查if( file_exists($_GET['file']))
,因为你的条件太复杂而无法检入.htaccess
(将controllers/
插入要检查的路径中)