我的index.php只有一個行,我也有隻有兩行的.htaccess在它
RewriteEngine on
RewriteRule ^([a-z]+)$ ?a=$1
爲什麼當我輸入/ab.cd
我收到一個404錯誤,但是如果我輸入/abcd.
它不會給我一個404錯誤和PHP回聲abcd
(在URL末尾沒有點)。
有人可以告訴我爲什麼我的重寫規則允許通過abcd.
而不是給我一個404錯誤?
我的index.php只有一個行,我也有隻有兩行的.htaccess在它
RewriteEngine on
RewriteRule ^([a-z]+)$ ?a=$1
爲什麼當我輸入/ab.cd
我收到一個404錯誤,但是如果我輸入/abcd.
它不會給我一個404錯誤和PHP回聲abcd
(在URL末尾沒有點)。
有人可以告訴我爲什麼我的重寫規則允許通過abcd.
而不是給我一個404錯誤?
編輯:
我只是測試你的重寫規則(獨立)在我的開發環境和它的作品。它不允許/abcd.
通過我的 - 它給了我一個404錯誤,所以你的環境中必須有某些東西影響你的規則。
- 初始後
在/ab.cd
貌似期間未在重寫規則定義() - 只是小寫a-Z字符。
用途:
RewriteEngine on
RewriteRule ^([a-z.]+)$ ?a=$1
^
你使用正則表達式,([a-z]+)
,只匹配了小寫字母 「A」 到 「Z」。它永遠不會匹配一系列字母,後跟一個句點,然後是一系列字母,例如您嘗試使用ab.cd
。
如果您想要匹配句點,則需要([a-z.]+)
。
如果我輸入/ abcd,我想得到404錯誤。 (在網址的結尾處有點) – user1809008
您使用的表達式不應與'abcd.'匹配。猜測,也許你的瀏覽器正在剝離這段時間?這似乎是非常不正確的行爲,但我無法建議任何其他事項來檢查我的頭頂。 – meagar
@meagar這可能是OP中的標點符號,但我可能是錯的。 – nickhar
我剛剛重建我的服務器上的情況,我得到所需的404錯誤。我只將[L]
標誌添加到RewriteRule中。
的.htaccess
RewriteEngine on
RewriteRule ^([a-z]+)$ test.php?a=$1 [L]
test.php的
<?php echo $_GET['a']; ?>
是否有可能下面可能與你的要求干涉任何其他重寫規則?即使在包含其他文件?在這種情況下,L標誌可能會對您有所幫助。
在這種情況下,PHP回聲只有abcd(沒有網址末尾的點),但不會給我一個404錯誤。 – user1809008
我認爲他對第二種情況更感興趣,爲什麼'abcd.'不會產生404錯誤。 – meagar