php - 有没有办法使用 mod_rewrite 从我的网站中删除 .html 和 .php 代码?

标签 php html mod-rewrite

我想知道是否有办法使用 mod_rewrite 从我的网站中删除 .html 和 .php 代码?

我的大部分页面都是用 HTML 制作的,但联系页面的扩展名为 .php。使用 .htaccess 中的代码

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]

显然会处理其中的 .html 部分。是否需要更改它以包括我的一个 php 页面?

或者如果没有别的,有没有办法为每个页面单独编写 mod_rewrite 代码,以摆脱它们的扩展?

提前致谢。

最佳答案

您可以将 RewriteRules 加倍并检查每个可能的扩展名(如果存在具有该名称的文件,则该规则将起作用)。

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME}.html  -f
RewriteRule $  .html [NC,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME}.php  -f
RewriteRule $  .php [NC,L]

$ 正则表达式只是“零宽度”匹配当前路径的末尾,因此扩展名只是被附加。

最省力的解决方案就是使用:

Options +MultiViews

(实际上启用了更多的服务器智能,但带来了轻微的性能成本。)

关于php - 有没有办法使用 mod_rewrite 从我的网站中删除 .html 和 .php 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8515199/

相关文章:

php - 我可以在 PHP 中存储一个可在所有文件中访问的变量,而不包含其他文件吗?

php - 流体/液体布局 - 多列,两侧都有填充/边距

php - 或 偏好随着返回而改变

html - 如何更改嵌套在div中的显示文本的宽度?

javascript - 我怎么知道元素是最后一项?

Apache 重写异常以不包含特定目录

regex - 重写 URL .htaccess

php - .htaccess 内部重定向不适用于字符串参数

php - 使用 PHP 从 JSON 数组解析营业时间、时段和工作日

php - 如何在 jQuery 中用 Font Awesome 替换删除单词