友好的 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
字符串 post
和 anything
假定为可变,而 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 重写规则正则表达式 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章