htaccess - 通过php文件重定向一切

时间:2014-11-24 18:45:07

标签: php apache .htaccess mod-rewrite redirect

RewriteEngine on
RewriteCond %{REQUEST_URI} !(\.|/$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.php?url=$1 [L]

上图显示了我当前的配置。

这个问题是,如果在htaccess文件所在的文件夹之后存在目录或文件,它似乎只是重定向。

如何重写这一点,以便它只是将每个请求重定向到api.php完整请求的路径?我不想查看htaccess文件中是否存在目录或文件,我可以在api.php中执行此操作,我只是想通过该文件推送所有请求。

2 个答案:

答案 0 :(得分:1)

您可以使用:

RewriteEngine on

RewriteCond %{REQUEST_URI} !(\.|/$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

RewriteRule ^((?!api\.php$).*)$ api.php?url=$1 [L,QSA,NC]

Lookahead (?!api\.php$)表示使用查询参数/api.php/api.php以外的所有内容重写为url

答案 1 :(得分:0)

像这样:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)$ /api.php?path=$1 [NC,L,QSA]

确保在路线

之前有这个
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d