对于我的网站,我有一个RewriteRule,它将URL http://www.mysite.com/work指向work.php文件。我还有一个名为“work”的目录,里面有文件,比如project1.php,project2.php等......
我必须编写哪些规则才能使URL http://www.mysite.com/work知道转到work.php文件,但URL http://www.mysite.com/work/project1知道我的意思是进入“工作”目录并显示project1.php文件?
编辑:应该指出,这就是我目前正在使用的内容:
RewriteEngine On
RewriteBase /beta/
RewriteRule ^([a-z]+)$ $1.php [L]
提高安全性的任何其他提示? (停止目录跳转等...)
答案 0 :(得分:4)
试试这个:
RewriteEngin On
RewriteBase /
RewriteRule ^work$ /work.php [QSA,L]
这将确保http://www.mysite.com/work
(没有斜杠)将转到您的work.php
文件。
如果您还希望http://www.mysite.com/work/
(使用尾部斜杠)转到work.php
,请在最后RewriteRule
的正上方添加此行。
RewriteRule ^work/$ /work [R=301,QSA,L]
这会将其重定向到没有尾部斜杠的URL,从而显示work.php
文件。
更新:由于您已经有RewriteBase
指令,只需将RewriteRule
行放在RewriteBase
之后但{{1}之前作为规则你正在使用一个catch-all并且将匹配所有内容。
答案 1 :(得分:0)
这是你问题的答案。这个对我有用。
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)$ $1.php [L]
只需删除beta/
答案 2 :(得分:-1)
尝试此规则:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php [L]