我正在嘗試使用 .htaccess 和 PHP 實作 SEO 友好的 URL。我已經實作了 90% 的目標,并且只在一個用例中掙扎。
這是發生了什么,當我訪問以下網址時
http://somesite.com/cms/movies/tarzan
它落在
my-handler.php?the_url=movies/tarzan
這是完美的,這就是我想要的,因為然后我自己管理它。真正的問題是當我不提供任何 slug 時,它會列出目錄(意味著顯示其中的所有檔案和檔案夾)
http://somesite.com/cms/
有人可以幫我修復以下 .htaccess 內容,這樣即使我不提供 slug 它仍然應該由 my-handler.php 處理而不是列出完整目錄嗎?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cms/
RewriteCond %{REQUEST_FILENAME} !/(admin|css|fonts|ico|include|js)/
RewriteRule ^my-handler\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /cms/my-handler.php?the_url=$1 [L,QSA]
</IfModule>
解決了
根據@Roman 的建議,我在上面的清單中添加了以下內容,它解決了我的問題。另外,我不必在訪問物理目錄方面妥協RewriteCond %{REQUEST_FILENAME} !-d
DirectoryIndex my-handler.php
uj5u.com熱心網友回復:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cms/
RewriteCond %{REQUEST_FILENAME} !/(admin|css|fonts|ico|include|js)/
RewriteRule ^my-handler\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css|json|woff|ttf)
RewriteRule ^(.*)$ /cms/my-handler.php?the_url=$1 [L,QSA]
</IfModule>
uj5u.com熱心網友回復:
首先,您必須設定DirectoryIndex以處理指向/您的my-handler.php. 這可以通過將行添加到您的.htaccess
DirectoryIndex my-handler.php
要禁用目錄串列,您必須通過添加以下行來禁止串列 .htaccess
Options -Indexes
請記住,此配置.htaccess僅針對您放置檔案的目錄。如果您想對整個網路服務器進行更改,您可以編輯httpd.conf并搜索
Options Indexes
并洗掉該Indexes選項。
檔案
該串列由mod_autoindex 模塊提供。
不錯的側面
如果您只想禁用特定檔案型別(如.env或.php檔案)的串列,則可以IndexIgnore *.php向您添加該選項.htaccess
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322388.html
