簡體   English   中英

.htaccess RewriteRule無法運行apache

[英].htaccess RewriteRule not working apache

我有這個鏈接:
http://www.example.com/NEW/movie.php?name=Parker&id=1904996
我希望它顯示如下:
http://www.example.com/NEW/Parker/1904996.htm

這是我的.htaccess代碼:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /NEW/movie.php?name=$1&id=$2 [L]

有幫助嗎?

您的代碼中似乎反向使用此規則。

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]

.html意思是“任何字符后面跟着文字字符串html 。但是你希望它是.htm 。你可以通過在它前面放一個反斜杠來逃避這段時間。

  • . =任何角色
  • \\. =文字. 字符

也許用

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

哪個會轉發.html.htm (因為l應該是“重復0或1次”)。

變化:

  • [^/]+而不是[^/] 加號表示“重復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到無窮大時間之間的任何數字”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM