[英]URL Rewriting returns 500 internal server error
我正在嘗試將其轉換為:
site/read.php?id=6
至
site/read/6
我已經嘗試了幾種在SO上找到的解決方案,最后一種是(輸出: site/read/id/6
): RewriteRule ^(.*?\\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N,QSA]
RewriteRule ^(.*?\\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N,QSA]
當我嘗試第二個鏈接時,它將掛起,並且apache崩潰(LOL)。
不確定.htaccess文件的其余部分是否有問題,因此下面是完整的代碼:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^(.*?\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N,QSA]
我可以實現(使用第1-4行),沒有顯示任何php擴展名,因此地址欄當前顯示為site/read?id=6
您能指出我哪里出問題了嗎?
您可以將此代碼放在htaccess中(必須在根文件夾中)
Options -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/read\.php\?id=([0-9]+)\s [NC]
RewriteRule . /read/%1? [R=301,L]
RewriteRule ^read/([0-9]+)$ /read.php?id=$1 [L]
我會在PHP中執行dthis,很難調試Apache得到的東西,可能是進入了不確定的循環,您是否在apache日志文件中找到了任何東西? 但是省去了麻煩,用PHP做到了,如果您使用的是Framework,那么很容易引入一個PHP進行檢查,並在URL中檢測到.php時重定向到新頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.