上的PHP扩展有没有办法.htaccess文件可写,这样默认web服务器
http://www.mysite.com/about
负载about.php
和同样的任何文件?
我试图
RewriteEngine On
RewriteRule ^([0-9A-Za-z]+)$ $1.php
,但它似乎并没有工作。
上的PHP扩展有没有办法.htaccess文件可写,这样默认web服务器
http://www.mysite.com/about
负载about.php
和同样的任何文件?
我试图
RewriteEngine On
RewriteRule ^([0-9A-Za-z]+)$ $1.php
,但它似乎并没有工作。
这是最常见的规则(利用mod_rewrite的 - 确保它被加载并启用) - 这将确保这样的PHP文件改写前确实存在(是的,这是一个慢一点,但更安全):
Options +FollowSymLinks
RewriteEngine On
# add .php file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [L]
或者只是使用:
Options +MultiViews
这将打开关于“内容谈判”。但它有一些缺点。
例如:让我们假设你在你的网站的根文件夹中有hello.html
& hello.php
。如果你要求example.com/hello
,启用该选项,Apache将查找替代名称(同名但扩展名不同),并且将服务于hello.html
或hello.php
(我无法确定哪个是首选)。
但是,如果您只有一个文件具有这样的唯一名称(例如hello.php
),那么这里根本没有问题。
我尝试了你在http://www.justnear.me/about上所说的话,它似乎不工作(about.php在那里)。 – Rio
1)你在你自己的服务器..或共享主机? 2)请仔细检查/确认托管公司mod_rewrite已安装并启用,3).htaccess文件已启用(一些托管公司为了安全和性能目的禁用它们)。 4)检查你的Apache错误日志中是否有可能的错误信息。规则和替代方法绝对是**工作解决方案 - 它必须是您特定的Apache配置/设置。 – LazyOne
另外...你有其他重写规则吗?他们可能会干涉这个规则(这一切都取决于你的规则和他们的顺序)。 – LazyOne
你的重写是什么?我的意思是它如何失败? –
重写规则看起来不错。只是为了确认,你正在运行Apache Web服务器,对。这种技术显然不适用于IIS。 – Spudley
@迈克尔它什么都不做 - 它似乎不工作。 – Rio