有點奇怪,我覺得必須回答,但我似乎找不到。
我在自定義 PHP 站點(非 WORDPRESS)上的 .htaccess 檔案中有以下內容:
Options FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(contact|gallery|links)$ $1.php [L]
我無法弄清楚為什么“畫廊”只給了我一個 403。
example.com/links
example.com/contact
兩者都按預期作業并轉到所需的頁面。然而
example.com/gallery
重定向到
example.com/gallery/
并拋出 403 Forbidden 錯誤
gallery.php 是一個頁面,可以從同一個 URL 訪問
gallery.php 上沒有任何內容可以重定向或檢查查詢字串或比較 URI。我不明白。
真的對 .htaccess 的東西視而不見(總是有),所以非常感謝任何幫助。我究竟做錯了什么?!
此外,在https://htaccess.madewithlove.com/上對其進行了測驗,它說我的作業是正確的,所以真的不明白它發現了什么不正確。為什么它認為畫廊是一個子檔案夾,而不是一個 URL?
而且我剛剛意識到,我確實有一個畫廊檔案夾,所以如果有人能告訴我如何使用 htaccess 來訪問頁面而不是檔案夾,我將不勝感激!如果有幫助,畫廊檔案夾中有一個 .htaccess 以防止直接訪問影像:
Options -Indexes
Options -ExecCGI
# AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi
<Files ^(*.jpeg|*.jpg)>
order deny,allow
deny from all
</Files>
<FilesMatch "\.(jpe?g)$">
order allow,deny
allow from all
</FilesMatch>
他們會矛盾嗎?
uj5u.com熱心網友回復:
由于gallery是物理目錄,因此您需要設定DirectorySlash Off以防止 mod_dir 通過 301 外部重定向附加尾部斜杠。(此重定向會被瀏覽器永久快取,因此您需要在繼續之前清除瀏覽器快取。)
但是請注意,當禁用 時DirectorySlash,您還必須確保它Options -Indexes也設定為在目錄中省略尾部斜杠時防止 mod_autoindex 生成目錄串列,因為該DirectoryIndex目錄中的檔案將不再阻止生成目錄串列。請參閱Apache Docs 中指令下的安全警告DirectorySlash。
您可能還需要設定RewriteOptions AllowNoSlash以允許 mod_rewrite 匹配沒有尾部斜杠的目錄。
然后,您需要修改現有規則...
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{QUERY_STRING} ^$ RewriteRule ^(contact|gallery|links)$ $1.php [L]
洗掉前兩個RewriteCond指令。它們不是必需的,因為您想要重寫 3 個特定的 URL。如果任何條件失敗,則不會發生重寫。
如果contact, galleryorlinks碰巧作為物理檔案(非常不可能)或目錄(gallery看起來是一個目錄)存在,則不會發生重寫。
概括
DirectorySlash Off
Options FollowSymlinks -Indexes
RewriteEngine On
RewriteOptions AllowNoSlash
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(contact|gallery|links)$ $1.php [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/431733.html
上一篇:RewriteBase值在哪里?
