2014-02-20 72 views
2

我在這裏有點難住。我肯定已經有超過100篇文章和文章爲此尋找解決方案。htaccess SEO URL

我試圖把這個:

sub.domain.org/folder/index.php?p=home 

分爲:

sub.domain.org/folder/home/ 

低於我的規則已經發展很多次,但幾乎所有的東西不起作用。我不知道還有什麼要嘗試。真的很感謝這裏的一些幫助。 Mod Rewrite已啓用,並且我託管了我自己的服務器。

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^/?folder/(.*)/$ /folder/index\.php?p=$1 [L] 
+0

「幾乎everythong不起作用」 - 你可以舉個例子什麼工作?當前的規則會出現什麼情況,錯誤500或404? –

回答

2

試試這個代碼/folder/.htaccess

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase /folder/ 

RewriteCond %{THE_REQUEST} /index\.php\?p=([^\s&]+) [NC] 
RewriteRule^%1/? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+?)/?$ index.php?p=$1 [L,QSA] 
+0

哇!這幾乎完全有效。現在圖像不會加載到頁面上。當使用規則時,我將所有圖像放在子文件夾「folder/img/logo.png」中,它變成了「folder/home/img/logo.png」,這會阻止加載圖像。 – Err

+0

實際上,這不是由於規則,而是由於您使用圖像的相對鏈接。你可以在你的CSS,js,圖像文件中使用絕對路徑而不是相對路徑。這意味着你必須確保這些文件的路徑以'http://'或斜槓'/'開始。或者,您可以嘗試在您的頁面的HTML標頭中添加此項:'' – anubhava

+1

謝謝,親切的先生! – Err

0

我認爲正確的正則表達式是

RewriteRule ^/folder/(.*)/?$ /folder/index\.php?p=$1 [L] 
+0

這不起作用。沒有效果。 – Err

0

嘗試:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{THE_REQUEST} \ /+folder/index\.php\?p=([^&\ ]+) 
RewriteRule^/folder/%1/? [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^folder/(.+)/?$ /folder/index.php?p=$1 [L] 

你的規則導致一個循環,將返回500錯誤。

+0

這不起作用。它重定向到SEO網址,但我得到一個404頁面。 – Err

+0

@Err「文件夾」後面的部分是否有斜槓? –

+0

是的。它的確如此。仍然404。 – Err