2015-09-10 29 views
2

這裏是我的htaccess文件請看看添加新規則到我的htaccess文件來替換?通過/

ErrorDocument 404 /error404.php 
ErrorDocument 403 /error404.php 
Options -Indexes 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_METHOD} POST [NC] 
    RewriteRule^- [L] 

    RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] 
    RewriteRule \.(gif|jpg|png)$ http://www.domain.com [L] 
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

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

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

    ### rules to convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

    RewriteCond %{THE_REQUEST} /profile\.php\? [NC] 
    RewriteCond %{QUERY_STRING} ^([^&]+)&(.*)$ 
    RewriteRule^%{REQUEST_URI}?%1/%2 [DPI,E=QS:1] 

    RewriteCond %{ENV:REDIRECT_QS} =1 
    RewriteCond %{QUERY_STRING} ^([^=]+)=(.*)$ 
    RewriteRule^%{REQUEST_URI}?%1/%2 [DPI,E=QS:1] 

    RewriteCond %{ENV:REDIRECT_QS} =1 
    RewriteCond %{QUERY_STRING} ^[^&=]+$ 
    RewriteRule ^(profile)\.php$ /$1/%{QUERY_STRING}? [L,NE,R=302] 

    # recursion rule to replace /n1/v1/n2/v2 to QUERY_STRING 
    RewriteRule ^(profile)(?:\.php)?/([^/]+)/([^/]*)(/.*)?$ /$1.php$4?$2=$3 [L,QSA] 

     ### end of convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC] 
     RewriteRule ^(.+?)/?$ /$1.php [L] 

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

我想添加一個新的規則到這個文件可以替代這個網址www.domain.com/profile?id=2www.domain.com/profile/2

我是新來的htaccess請幫我

,一個重要的事情是,我應該能夠在我的PHP代碼

0123獲取得到的變量來回ID
$idis=$_GET['id']; 
+0

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=htaccess%20rewrite%20query% 20string%20to%20path&es_th = 1 – samrap

+0

對不起,但沒有幫助 –

回答

1

你的規則越來越相當複雜。隨着這種正則表達式模式和順序變得更加重要。擁有完整的的.htaccess就象這樣:

ErrorDocument 404 /error404.php 
ErrorDocument 403 /error404.php 
Options -Indexes -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_METHOD} POST [NC] 
RewriteRule^- [L] 

RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.*$ [NC] 
RewriteRule \.(gif|jpg|png)$ http://www.domain.com [L] 

RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

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

RewriteCond %{THE_REQUEST} \s/+profile(?:\.php)?\?id=([^\s&]+) [NC] 
RewriteRule^/profile/%1? [L,R=302] 

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

### rules to convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

RewriteCond %{THE_REQUEST} /profile\.php\? [NC] 
RewriteCond %{QUERY_STRING} ^([^&]+)&(.*)$ 
RewriteRule^%{REQUEST_URI}?%1/%2 [DPI,E=QS:1] 

RewriteCond %{ENV:REDIRECT_QS} =1 
RewriteCond %{QUERY_STRING} ^([^=]+)=(.*)$ 
RewriteRule^%{REQUEST_URI}?%1/%2 [DPI,E=QS:1] 

RewriteCond %{ENV:REDIRECT_QS} =1 
RewriteCond %{QUERY_STRING} ^[^&=]+$ 
RewriteRule ^(profile)\.php$ /$1/%{QUERY_STRING}? [L,NE,R=302] 

# recursion rule to replace /n1/v1/n2/v2 to QUERY_STRING 
RewriteRule ^(profile)(?:\.php)?/([^/]+)/([^/]*)(/.*)?$ /$1.php$4?$2=$3 [L,QSA] 

### end of convert ?n1=v1&n2=v2 /n1/v1/n2/v2 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^profile/([^/]+)/?$ profile.php?id=$1 [QSA,NC,L] 

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

RewriteRule ^(.+)$ page.php?brand=$1 [L,QSA] 
+0

親愛的先生,請你請告訴我如何取代所有?和=通過/在網址中,因爲有很多步驟,我需要做到這一點。 我是100%你可以告訴我,因爲是最好的htaccess文件。 雖然你的修改沒有幫助我,但我接受了答案。因爲答案是偉大的,有點與我想要的... –

+0

下面的規則轉換規則?n1 = v1&n2 = v2/n1/v1/n2/v2是我在SO上的答案之一這就是他們所做的。如果由於某種原因無法爲您工作,請隨時發佈新問題。我很樂意爲您提供幫助。 – anubhava

+0

這裏http://www.reurl.in/c2967ca1f先生我已經添加了與其他htaccess文件的另一個問題..它不與此htaccess鏈接..請看看,並請建議我的東西 –

1

嘗試:

RewriteCond %{THE_REQUEST} /profile\?id=([^\s]+) [NC] 
RewriteRule^/profile/id/%1? [NC,L,R] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^profile/id/([^/]+)/?$ /profile/$1 [NC,L] 
+0

我應該把這段代碼放在上面的文件中......我的意思是在開始或結束? –

+0

此代碼劑量發送獲取數據我無法接收從GET變量收到的數據 –

+1

您的其他規則覆蓋此,請嘗試添加下面的rewriterule =>「###規則轉換?n = 1 ....」 – starkeen

相關問題