SEO 友好 URL 不起作用

SEO 友好 URL 不起作用

我有一个类似下面的文件夹结构www.exampe.com/distributor/index.php 我想通过 SEO 友好的 www.example.com/distributer/abcinc 然后在index.php中想获取最后一段的值(本例中为abcinc)作为变量放入页面中

我的问题是,当我访问www.example.com/distributer/abcinc但如果我转到www.example.com/distributer

这是我的 .htaccess 文件,位于分发服务器文件夹中

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

我通过 phpinfo() 确认 mod_rewrite 已全部设置/启用,所以不确定我遗漏了什么?

答案1

...我的 .htaccess 文件在分发者文件夹中

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

如果.htaccess文件实际上位于/distributor目录中,那么您不应该distributor引用RewriteRule 图案。这与包含该文件的目录相关的 URL 路径进行匹配.htaccess

同样,您不应将distributor目录包含在相对目录中代换目录内的字符串/distributor。相对代换再次与包含该文件的目录相关.htaccess

您的现有.htaccess文件的写入方式好像位于文档根目录中,而不是/distributor所述的子目录中。

然而,你也引用了“分发or”和“分发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_]

答案2

您的RewriteRule匹配仅包含数字,即distributor/3728等。它不匹配abcinc

id传递给index.php它的参数来看,您的应用程序似乎需要的是 ID,而不是名称。您需要检查应用程序如何设置它来处理名称。

相关内容