2013-03-04 164 views
1

我正在嘗試爲SEO目的重寫一個URL。使用.htaccess查詢字符串重寫

舊網址是:

http://www.domain.net/index.php?p=beer 

新的URL應該是:

http://www.domain.net/beer 

我在.htaccess代碼是:

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

即使研究小時後,我不知道爲什麼這不起作用:(

這裏是完整的.htaccess:

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} Teoma 
RewriteRule ^.* - [F] 
rewritecond %{HTTP_HOST} !^www\.domain\.net$ [NC] 
rewriterule ^(.*)$ http://www\.domain\.net/$1 [R=301,L] 

RewriteCond %{QUERY_STRING} ^p=uppic$ 
RewriteRule ^index\.php$ /? [L,R=301] 

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

# Pwd service 

AuthType Basic 
AuthName "Service" 
AuthUserFile /xxxx/www/xxxxxx/xxxxx/xxxxxx/.htpasswd 


<Files admin.php> 
Require user xxxxxxx 
</Files> 

Options -Indexes 

在此先感謝!


我這個代碼最後的問題是:

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

使得工作:

http://www.domain.net/beer 

和啤酒指的是頁面:

http://www.domain.net/index.php?p=beer 

這是偉大的!但是,如果我把一個/後面的啤酒,例如:

http://www.domain.net/beer/ 

我beer.php文件運行在另一條路徑,所以沒有CSS,圖片,JS等是包括在內。任何想法如何解決這個問題,而不需要更改html到http://www.domain.net/style.css ...?

回答

-1

你有沒有試過這個:?

^([^/\.]+)\/?$ 

否則我會嘗試.htacces沒有其他的東西。

剛:

RewriteEngine On 
RewriteBase/
RewriteRule ^([^/\.]+)\/?$ index.php?p=$1 
+0

兩者都不起作用。 – user2133694 2013-03-04 23:33:55

+0

這與所要求的相反。 – progammingaddict 2014-12-18 01:51:06

0

如果你想捕捉的查詢字符串的一部分,你必須使用一個RewriteCondQUERY_STRING

RewriteEngine On 
RewriteCond %{QUERY_STRING} p=(.+) 
RewriteRule ^/?index.php$ /%1? [R,L] 

此客戶端重定向到新的URL http://www.domain.net/beer

+0

好的,越來越近了。但是,這將我重定向到http://www.domain.net/beer?p=beer – user2133694 2013-03-05 01:51:31

+0

@ user2133694對不起,我忘了添加最後的問號。 – 2013-03-05 01:56:51

+0

這是工作,真棒!謝謝。您是否知道是否可以在瀏覽器中顯示我們的www.domain.net/beer,並獲取將由http://www.domain.net/index.php?p=beer打開的頁面。因爲現在,我得到了404. – user2133694 2013-03-05 02:03:05