2013-03-04 148 views
1

我想弄清楚为什么我的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。有任何想法吗?

回答

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]

+0

除了所有的CSS是搞砸了它的伟大工程。任何想法可能导致这种情况?提前致谢。 – ashe540 2013-03-05 19:57:48

+0

这是因为路径不同。您应该使用绝对路径或在网页的标题中包含URI基址:<>'在标记之间。 – 2013-03-05 20:03:35

+0

完美,那就是诀窍。谢谢一堆! – ashe540 2013-03-05 20:09:03

0

在你的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的目录中)