友好的URL htacess重写规则正则表达式
问题描述:
我想弄清楚为什么我的htacess文件中的重写规则没有改变URL到更多的“SEO友好的URL”。友好的URL htacess重写规则正则表达式
Here's我的意思的例子:我想从这个去
:
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
。有任何想法吗?
答
尽管问题很混乱(描述与重写规则指示的内容相反)并且没有所有必需的信息,您可以在一个.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]
答
在你的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文件所在的位置。 (在这种情况下,在名为Folder的目录中)
除了所有的CSS是搞砸了它的伟大工程。任何想法可能导致这种情况?提前致谢。 – ashe540 2013-03-05 19:57:48
这是因为路径不同。您应该使用绝对路径或在网页的标题中包含URI基址:>'在
标记之间。 – 2013-03-05 20:03:35完美,那就是诀窍。谢谢一堆! – ashe540 2013-03-05 20:09:03