【发布时间】:2014-08-05 12:10:44
【问题描述】:
我打算从我的网页地址中删除文件名或扩展名。有一些解决方案可以做到这一点(.htaccess),但我的 .htaccess 文件是空的。我想知道我该怎么做? 转这个:
http://www.example.com/page.php
进入这个:
http://www.example.com/page
感谢阅读。
【问题讨论】:
标签: .htaccess webaddress
我打算从我的网页地址中删除文件名或扩展名。有一些解决方案可以做到这一点(.htaccess),但我的 .htaccess 文件是空的。我想知道我该怎么做? 转这个:
http://www.example.com/page.php
进入这个:
http://www.example.com/page
感谢阅读。
【问题讨论】:
标签: .htaccess webaddress
假设你的根目录下确实存在page.php,作为物理文件,那么你可以使用:
RewriteEngine On
RewriteRule ^([^\.]+)$ $1.php [NC,L]
如果 page.php 不存在,但它是重写规则的产物,你可以使用类似的东西:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
两个额外的规则说明:如果浏览器中的文件不存在并且它不是现有文件夹,则继续重写。
您需要更改您网站中的链接,才能使上述规则生效。比如:
<a href="http://www.example.com/page">Some fancy page</a>
【讨论】:
nonexisting.php 的任何 url example.com/nonexisting 产生内部服务器错误。它将继续尝试重写,直到达到内部递归限制。
确保在您的主配置文件中启用了 mod_rewrite 并且启用了 FollowSymLinks 选项,并确保您重新启动 Apache 以使这些更改生效。然后将以下内容添加到 www-root 中的 .htaccess 文件中:
RewriteCond %{REQUEST_URI} !\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.php [L]
第一个条件将确保您的 url 尚未以 php 结尾。如果是这样,那么添加 php 是没有意义的,现在是吗?第二个条件检查请求的文件是否不存在。如果它存在,我们希望显示现有文件:例如图像、css 或 js 文件。最后一行在内部重写为后面带有 .php 的文件。
【讨论】: