友好的 URL htaccess 重写规则正则表达式 [关闭]

Posted

技术标签:

【中文标题】友好的 URL htaccess 重写规则正则表达式 [关闭]【英文标题】:Friendly URLs htaccess Rewrite Rule Regex [closed] 【发布时间】:2013-02-18 16:01:13 【问题描述】:

我试图弄清楚为什么我的 htaccess 文件中的重写规则没有将 URL 更改为更“SEO 友好的 URL”。

这是我的意思的一个例子:

我想从这里开始:

www.mydomain.com/Folder/post.php?url="how-to-make-me-a-happy-camper"

对此:

www.mydomain.com/Folder/how-to-make-me-a-happy-camper

或者这个:

www.mydomain.com/Folder/post/how-to-make-me-a-happy-camper

这是我的 htacess 代码:

RewriteEngine on
RewriteRule ^post/([a-zA-Z0-9-/]+)$ /post.php?url=$1

或者没有帖子/

我似乎无法使正则表达式工作,因为当我点击一个链接时,它会带我到 www.mydomain.com/Folder/post.php?url=how-to-make-me-a-happy-camper.

【问题讨论】:

【参考方案1】:

虽然这个问题令人困惑(描述与重写规则所指示的相反)并且没有所有必需的信息,但您可以在根目录中的一个 .htaccess 文件中尝试:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_URI !post\.php             [NC]
RewriteCond %REQUEST_URI ^/Folder               [NC]
RewriteRule ^.*/([^/]+)/? /Folder/post.php?url=$1 [L]

静默地图

http://www.mydomain.com/Folder/post/anything

http://www.mydomain.com/Folder/anything

http://www.mydomain.com/Folder/post.php?url=anything

字符串 postanything 假定为可变,而 Folder 和脚本名称 (post.php) 假定为固定。

对于永久且可见的重定向,请将 [L] 替换为 [R=301,L]

【讨论】:

它工作得很好,只是所有的 css 都搞砸了。知道可能是什么原因造成的吗?提前非常感谢。 那是因为路径不同。您应该使用绝对路径或在页面标题中包含 URI 基址:<base href="/whatever"> 在 标记之间。 完美,成功了。非常感谢!【参考方案2】:

在您的 htaccess 文件中使用 RewriteBase 选项。

 RewriteBase / #( or if your document root in a subfolder named Folder: /Folder/ )

并且您应该添加两个 RewriteCondition,因此您的 .htaccess 文件(它不会连接到您的主题,但如果您使用 apache rewrite_mod 则推荐)应该如下所示:

RewriteEngine on

RewriteBase /Folder/
RewriteCond %REQUEST_FILENAME !-f # the requested uri does not points to a file
RewriteCond %REQUEST_FILENAME !-d # the requested uri does not points to a directory
RewriteRule ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1

当然,.htacces 文件应该是您的 post.php 文件所在的位置。 (在这种情况下在名为文件夹的目录中)

【讨论】:

以上是关于友好的 URL htaccess 重写规则正则表达式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

htaccess url 重新样式化图像 url 到 seo 友好

.htaccess使用无限参数重写规则

htaccess正则规则学习笔记整理

.htaccess 重写友好的 URL

htaccess 重写和重定向 SEO 友好的 URL

使用 php 和 .htaccess 进行友好的 url 重写。与 css 图像和 js 的相对链接的困难