.htaccess重写URL到页面或目录

时间:2009-08-06 08:10:28

标签: php .htaccess

对于我的网站,我有一个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]

提高安全性的任何其他提示? (停止目录跳转等...)

3 个答案:

答案 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]