簡體   English   中英

.htaccess mod_rewrite 具有 3 個目錄級別

[英].htaccess mod_rewrite with 3 directories levels

如何在 Htaccess 上管理 3 個子目錄級別?
解釋:

  • http://example.com/category1/
  • http://example.com/category2/
  • http://example.com/category3/

RewriteRule to *category.php?category=$1*

  • http://example.com/category1/type1/
  • http://example.com/category2/type7/
  • http://example.com/category3/type8/

RewriteRule to *type.php?category=$1&type=$2*

  • http://example.com/category1/type1/company3/
  • http://example.com/category2/type7/company4/
  • http://example.com/category3/type8/company9/

RewriteRule to *company.php?category=$1&type=$2&company=$3*

.htaccess 文件位於初始根文件夾(其中 index.php)

下一個是最好的方法嗎?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)(?:/)?$ /category.php?category=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)(?:/)?$ /type.php?category=$1&type=$2 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)(?:/.*)?$ /company.php?category=$1&type=$2&company=$3 [L]

你相當接近。 請注意, RewriteCond僅適用於下一個直接RewriteRule因此您檢查!-f將僅用於第一條規則。 您可以使用單獨的規則來丟棄針對現有文件和目錄的所有請求。

RewriteEngine On

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([\w-]+)/?$ category.php?category=$1 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/?$ type.php?category=$1&type=$2 [L,QSA]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ company.php?category=$1&type=$2&company=$3 [L,QSA]

暫無
暫無

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

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