2015-11-10 44 views
1

我嘗試重定向:
來自:www.myDomain.com/ca/blog/first-post
到:www.myDomain/CA /博客/ post.php中的url =第一後重寫規則和GET

我寫這篇文章在.htaccess:

RewriteRule ^ca\/blog\/(.*)\/?$ ca/blog/post.php?url=$1 [L] 

在post.php中我有這樣的:

$url = $_GET['url']; 
echo $url; 

看來,它關係到正確的文件:post.php中,b UT回波給出: post.php中,它應該首先-後(或不管我有博客後/)

我在這裏測試的正則表達式:http://regexr.com/3c5ud,它是確定

我還測試在這裏的htaccess:http://htaccess.madewithlove.be

但是,當我把服務器仍然給post.php。任何人都可以解釋,請。

在.htaccess我還有其他的規則:

# Get rid of .php : 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

# Page of errors: 
ErrorDocument 404 /errors/noTrobat.html 

# From no www to yes www : 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
</IfModule> 
+0

的頁面是'post.php'或回聲'post.php中'? – chris85

+2

問題是該模式也匹配post.php本身,並很容易糾正。但是我懷疑你在.htaccess中有更多的重寫規則,因爲這通常會導致重寫循環和500錯誤。請在.htaccess文件中發佈任何其他內容,以便我們可以推薦正確的解決方案。 –

+0

@ chris85我想讓RewriteRule把我驅動到www.myDomain/ca /​​ blog/post.php?url = first-post或者我在博客後有什麼/ – Nrc

回答

1

的問題是,當前的規則匹配post.php,也是如此。所以,你會得到這樣的:

www.myDomain.com/ca/blog/first-post 
    -> www.myDomain/ca/blog/post.php?url=first-post 
    -> www.myDomain/ca/blog/post.php?url=post.php 

當前的規則之前添加規則,以防止post.php改寫本身:

RewriteRule ^ca\/blog\/post\.php - [L] 
RewriteRule ^ca\/blog\/(.*)\/?$ ca/blog/post.php?url=$1 [L] 
+0

我工作。謝謝。你在[L]之前加了一個短劃線是否意味着:「不匹配這個」你能解釋一下嗎? – Nrc

+0

@Nrc很高興幫助!請記住接受答案。 :)'[L]'之前的'-'只是意味着「不要改變它;不要管它。」 –