簡體   English   中英

.htaccess網址重寫,省略了參數的最后一個字符

[英].htaccess url rewriting omitting last character of the parameter

我正在開發一個Web應用程序,其中應該以其他網站的名稱作為參數,正在使用apache Web服務器上的.htaccess文件重寫url,這是我在.htaccess文件中編寫的代碼:

RewriteEngine On
RewriteRule ^([a-z0-9\_\-]+(\.)[a-z0-9\_\.\-]+)[^(site.php)] site.php?url=$1
RewriteRule ^([a-z0-9\_\-]+(\.)[a-z0-9\_\.\-]+)[^(site.php)]/ site.php?url=$1

我寫了[^(site.php)]這是因為它通過將site.php作為site.php的參數傳遞給我的正則表達式。 這是正確的方法,但是唯一的問題是參數的最后一個字符被省略,例如,在編寫時:

www.mywebsite.com/google.com

它采用google.co並省略了最后一個m 如果通過google.co.in ,則采用google.co.i並省略n 這可能是什么原因?

由於您使用[^(site.php)] (並不代表您的想法),它將與您網址的最后一個字符匹配。 您應該使用RewriteCond,您可以嘗試:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9\_\-]+(\.)[a-z0-9\_\.\-]+)/?$ site.php?url=$1

Wich意思是:不要為現有文件或目錄重寫

暫無
暫無

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

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