这些是来自我的两个本地主机站点的.htaccess文件。
虚拟主机1(mysite1.com):
# this is the initialization
Options +FollowSymLinks
RewriteEngine On # Turn on the rewriting engine
RewriteRule ^news-07/?$ news_01_06_2007.php [NC,L]
# Handle requests for "news"
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)\.php$ $1 [nc]
#RewriteRule ^(.*)\.php$ http://mysite1.com/$1 [R,NC]
但是,当我尝试http://www.mysite1.com/testfile.php时,它会重定向到http://mysite.com/testfile,除非显示以下消息:
未找到
在此服务器上找不到请求的URL / testfile。
如何解决此错误消息并确保我的.htaccess文件有效?
我能够很好地理解.htaccess,关于阻止蜘蛛等事情,但是这个问题引起了我一些问题,有人知道什么是错的,以及如何防止将来再次发生这种错误?
所有帮助表示赞赏。
答案 0 :(得分:0)
我想你可能会试图倒退。尝试这样的事情:
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.php [nc]
答案 1 :(得分:0)
使用
启用MultiViews
Options +MultiViews
这不仅适用于.php文件,还适用于客户端声称在请求中接受的所有文件。见here。请注意,Apache中错误但工作的配置过去给MultiViews命名不好,请参阅here以确保正确配置了Apache。
如果你想使用重写规则,我会这样做(未经测试):
RewriteCond $0 !\.[a-zA-Z0-9]+$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ $0.php [QSA]
QSA
标志是必要的,以便您不会丢失查询字符串