0
看起來像一個簡單的問題。但我根本不明白:簡單的正則表達式在htaccess中不起作用
這片htaccess的規則做的工作:
RewriteEngine On
RewriteRule ^m(.+)$ ?s=$1
但這並不:
RewriteEngine On
RewriteRule ^(.+)$ ?s=$1
它返回一個內部服務器錯誤。那個正則表達式有什麼問題?爲了工作應該改變什麼?
看起來像一個簡單的問題。但我根本不明白:簡單的正則表達式在htaccess中不起作用
這片htaccess的規則做的工作:
RewriteEngine On
RewriteRule ^m(.+)$ ?s=$1
但這並不:
RewriteEngine On
RewriteRule ^(.+)$ ?s=$1
它返回一個內部服務器錯誤。那個正則表達式有什麼問題?爲了工作應該改變什麼?
我不知道什麼「不起作用」的意思,但我認爲它可能會卡在重寫循環中。
試試這個:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^?s=
RewriteRule ^(.+)$ ?s=$1
我沒有測試過這一點,但它應該做的僅僅是重寫,如果有已不是一個s參數添加?
哦,我剛剛意識到你也可以在RewriteConds中查找實際的查詢字符串。您可以嘗試:
RewriteEngine On
RewriteCond %{QUERY_STRING} !s=
RewriteRule ^(.+)$ ?s=$1
它不起作用。我解決了它,或者更準確地說,使用'RewriteRule ^([a-z] +)$?s = $ 1'來解決它(所以點從正則表達式中消失)。但問題依然存在:爲什麼'^(。+)$'沒有工作? –
也許是同樣的原因,點也包括?=部分,所以它試圖不斷重寫它(使它成爲?s =?s =,?s =?s =?s =等)。通過將它限制爲以字母開頭的URI,它排除了?,基本上與我試圖做的一樣。 –
我也想我知道我做錯了什麼,我應該逃脫了? (它在正則表達式中有一個特殊的功能)。 –