2013-11-21 48 views

回答

2

看起來你在代碼中有相反的規則。

嘗試這些規則在您的DOCUMENT_ROOT/NEW/.htaccess文件:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase /NEW/ 

# fix css/js/media links 
RewriteRule ^.+?/((?:css|js|media)/.+)$ /$1 [R=302,NC,L,NE] 

# remove spaces 
RewriteRule "^([^ ]*) +(.*)$" $1$2 [L,R] 

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} /movie\.php\?name=([^&]*)&id=([^\s&]+) [NC] 
RewriteRule^%1/%2.htm? [R=302,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^([^/]+)/([^.]+)\.html?$ movie.php?name=$1&id=$2 [L,NC,QSA,NE] 
+0

這一個工程,但它從網址中刪除新目錄。網址現在變爲:http://www.movi​​eking.me/Snitch/0882977。HTM和現在的圖像和CSS顯示? – AXheladini

+0

但是你寫道:'我希望它能像這樣顯示: http:// www.example.com/Parker/1904996.htm'你想讓它像:'http://www.example.com/NEW/ Parker/1904996.htm'? – anubhava

+0

是的,就是這樣,我看到我寫錯了,對不起 – AXheladini

1

.html意味着「任何字符,後跟文本字符串html。然而,你希望它是.htm,您可以通過將一個反斜槓在它的前面逃跑的時間。

  • . =任何字符
  • \. = A字面.字符

也許使用

RewriteRule ^([^/]+)/(.+)\.html?$ /NEW/movie.php?name=$1&id=$2 [L] 

這將轉發.html.htm(因爲l應該「重複0或1次」)。

變化:

  • [^/]+而不是[^/]。加號表示「重複一次或多次」。如果你沒有這個,那麼你只允許一個這個字符不是斜槓。
  • (.+)而不是[^/]。由於我們不希望它保持匹配,直到我們達到斜線(因爲我們不會達到斜線),所以我們使用貪婪術語.+意思是「儘可能匹配儘可能多的字符,直到到達下一部分(\.html?$)我們也可以使用[^\.]但是這將意味着我們不能在我們的ID使用任何時期

另外,如果ID只能是數字。

RewriteRule ^([^/]+)/([1-9][0-9]*)\.html?$ /NEW/movie.php?name=$1&id=$2 [L] 

[1-9][0-9]*意味着「任何數字在1到9之間,隨後是在0-9之間的任何數字,重複0到無限次「

+0

還是什麼都沒有,我需要刪除新的/如果我在同一個目錄下把這個文件? – AXheladini

+0

@AXheladini你會得到什麼錯誤? 500? 404? – h2ooooooo

+0

沒有網站正常顯示此網址:http://www.example.com/NEW/movie.php?name=Parker&id=1904996 – AXheladini