regex - 用/使用 .htaccess 替换 URL 中的 .php

标签 regex apache .htaccess mod-rewrite

我整天都在寻找一种解决方案,使用 .htaccess 将 URL 中的 .php 替换为/。大多数解决方案对我来说根本不起作用(没有重写 URL,甚至只是删除 .php),直到我在 SO 上找到这个漂亮的解决方案。

https://stackoverflow.com/a/11084526/1724376

现在我的问题是它只删除了 .php 但没有用“/”替换它。我已经尝试了很多没有运气的事情,但我对 htaccess 和重写条件等了解不多。我真的希望这里有人能帮助我。

为了不让我因为没有尝试任何事情而被否决,这是我尝试过的一个,但它根本没有重写 URL。

RewriteCond /%{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php

我们将不胜感激。

编辑:为了澄清,我希望 www.mysite.com/contact.php 显示为 www.mysite.com/contact/

最佳答案

你的规则是这样的:

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1/ [R=302,L,NE]

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

关于regex - 用/使用 .htaccess 替换 URL 中的 .php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24346865/

相关文章:

regex - mod重写url中的路径

regex - 引用-此正则表达式是什么意思?

Java - 正则表达式替换前导零,但不是全部并保留负号

javascript - 如何防止javascript中的非字母数字输入?

r - 查找字符串中某个单词的第一次出现并在该单词前添加下划线

java - Apache CXF 中获取 Exception_Exception 中的服务器堆栈跟踪的问题

apache - 使用 git 存储库作为网站根文件夹

Git 智能 HTTP 协议(protocol)无法在推送时执行服务器端 Hook

.htaccess - htaccess 手动重定向到重命名的 "Main Page"

apache ExpiresDefault - 只是不起作用