2013-03-04 249 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的目錄中)