Mod-Rewrite

seo 友好的 url 不起作用

  • August 31, 2022

我有一個類似下面www.exampe.com/distributor/index.php的文件夾結構 ,我想通過 seo 友好的 www.example.com/distributor/abcinc訪問該文件 ,然後在 index.php 中想要獲取在這種情況下,最後一段的值 abcinc 作為變數進入頁面

我的問題是當我訪問www.example.com/distributer/abcinc時收到 404,但如果我訪問www.example.com/distributor則會載入頁面

這是我的 .htaccess 文件,它位於分發器文件夾中

RewriteEngine On
RewriteRule ^distributor/([0-9]+)$ distributor/index.php?id=$1

我通過 phpinfo() 確認 mod_rewrite 已全部設置/啟用,因此不確定我缺少什麼

…我的 .htaccess 文件位於分發器文件夾中

RewriteRule ^distributor/([0-9]+)$ distributor/index.php?id=$1

如果.htaccess文件實際上在/distributor目錄中,那麼您不應該在模式distributor中引用目錄。這與相對於包含該文件的目錄的 URL 路徑匹配。RewriteRule .htaccess

同樣,在目錄中時,您不應將distributor目錄包含在相對替換字元串中/distributor。相對替換再次是相對於包含該.htaccess文件的目錄。

您現有的.htaccess文件被寫入就好像它位於文件根目錄中,而不是所述的/distributor子目錄中。

但是,您在範例中還同時引用了“distribut o r”和“distribut er r”——我假設“e”是一個錯字,但這顯然也會導致匹配失敗。

而且,正如@TeroKilkanen 的回答中所提到的,您正在匹配正則表達式中的數字,而不是字母,就像您的範例 URL 中一樣。

因此,您現有的規則匹配表單的 URL/distributor/distributor/123並重寫為/distributor/distributor/index.php?id=123.

在文件中嘗試以下/distributor/.htaccess操作:

RewriteRule ^(\w+)$ index.php?id=$1 [L]

速記字元類匹配數字和字母,\w相當於字元類[0-9a-zA-Z_]

引用自:https://serverfault.com/questions/1109612