首页 > 解决方案 > 如何使用 htaccess 将以下 urls 模式重写为特定的 php 文件?

问题描述

我有两个动态 url,我想在不同的 php 上重定向。问题是两个网址都是动态的。所以我很难捕捉到模式并重定向它们。我在谷歌上搜索并找到了许多示例,但所有示例 url 都包含一些要捕获的模式。

下面是我的示例网址以及相应的 php。

https://www.example.com/my-dynnamic-category/my-dynamic-url-id/ 应该重定向到https://www.example.com/detail.php?p=my-dynamic-url-id

https://www.example.com/my-dynamic-category/应该重定向到https://www.example.com/category.php?p=my-dynamic-category

谁能帮帮我吗。

我尝试使用以下规则进行 detail.php 重定向,

RewriteRule ^\/detail/?$  /detail.php?url=$1$2 [R=301,L]

但是这个规则的问题是它只有在 url 包含单词详细信息时才有效

标签: apache.htaccessmod-rewriteurl-rewritingfriendly-url

解决方案


使用您显示的尝试/规则,请尝试在您的 .htaccess 文件中遵循以下规则。请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
##Rules for handling https://www.example.com/my-dynamic-category/ 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ category.php?p=$1 [L]

##Rules for handling https://www.example.com/my-dynnamic-category/my-dynamic-url-id/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/(.*)/?$ detail.php?p=$2 [L]

推荐阅读