2014-11-24 80 views
1
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 - 通过php文件重定向所有内容

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

我怎么能改写这个所以它字面上每一个请求只是重定向到api.php与完整的请求路径?我不想看看目录或文件是否存在于htaccess文件中,我可以在api.php中做到这一点,我只是想通过该文件推送所有请求。

回答

1

您可以使用:

RewriteEngine on 

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

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

先行(?!api\.php$)手段改写一切,除了/api.php/api.php与查询参数url

+1

非常感谢之前有这样的。 – jskidd3 2014-11-24 18:55:57

+0

不客气,很高兴它解决了。 – anubhava 2014-11-24 19:03:42

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