簡體   English   中英

URL重寫返回500內部服務器錯誤

[英]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.

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