Home >Backend Development >PHP Tutorial >关于用.htaccess重写URL的问题

关于用.htaccess重写URL的问题

WBOY
WBOYOriginal
2016-06-06 20:48:101245browse

我用的是apache,想用.htaccess实现重写URL的功能,但是遇到了一个很神奇的问题无法解决,先看我的重写规则,我的.htaccess文件:

<code class="lang-apache">RewriteEngine on
RewriteCond $1 !^(index\.php|public)
RewriteRule ^(.*)$ /PFW/index.php?$1 [L]
</code>

应用这个规则,能把大部分的路径访问转发到index.php这个页面处理,例如:

http://localhost/test/ => http://localhost/index.php?/test
http://localhost/example => http://localhost/index.php?/example

但是,唯一一个路径是无法转发到index.php的:

http://localhost/index/ //这个路径它会直接访问,而不会定位到index.php

初步搞清楚是因为目录下有一个index.php文件导致的,因为当我在index.php的同一个目录下创建test.php后:

http://localhost/test/ //这个路径也不会转发了,之前是可以转发的

也就是说,当目录下有一个和路径同名的php文件,我的.htaccess重写规则就不生效了。不知道有没有人遇到过和我一样的问题呢?到现在都没有想到解决方案,求各位指点迷津T^T

这个问题已被关闭,原因:

回复内容:

我用的是apache,想用.htaccess实现重写URL的功能,但是遇到了一个很神奇的问题无法解决,先看我的重写规则,我的.htaccess文件:

<code class="lang-apache">RewriteEngine on
RewriteCond $1 !^(index\.php|public)
RewriteRule ^(.*)$ /PFW/index.php?$1 [L]
</code>

应用这个规则,能把大部分的路径访问转发到index.php这个页面处理,例如:

http://localhost/test/ => http://localhost/index.php?/test
http://localhost/example => http://localhost/index.php?/example

但是,唯一一个路径是无法转发到index.php的:

http://localhost/index/ //这个路径它会直接访问,而不会定位到index.php

初步搞清楚是因为目录下有一个index.php文件导致的,因为当我在index.php的同一个目录下创建test.php后:

http://localhost/test/ //这个路径也不会转发了,之前是可以转发的

也就是说,当目录下有一个和路径同名的php文件,我的.htaccess重写规则就不生效了。不知道有没有人遇到过和我一样的问题呢?到现在都没有想到解决方案,求各位指点迷津T^T

试试这个

<code>RewriteEngine On
#RewriteBase ...
RewriteRule ^(index\.php$|public.*) $1 [QSA,L]
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn