gpt4 book ai didi

.htaccess - 如何在 mod_rewrite 中设置可选参数

转载 作者:行者123 更新时间:2023-12-02 23:01:06 25 4
gpt4 key购买 nike

我在一个新项目中,正在设计 URL 结构,问题是我希望 URL 看起来像这样:/category-23/关键字/5/正常页面是:/search.php?q=keyword&cat=23&page=5所以我的问题是,catpage 字段必须是可选的,我的意思是如果我转到 /keyword 它应该是/search.php?q=keyword(第 1 页)如果我去/category/keyword 应该是:/search.php?q=keyword&cat=category&p=1如果我去/keyword/5/ 必须是:/search.php?q=keyword&p=5

现在我的 .htaccess 是这样的:

RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)$ search.php?q=$2&cat=$1&page=$3 [L]

我无法使其正常工作,并且 CSS/图像文件无法加载。我非常感谢谁能给我一个解决方案。

最佳答案

您可以使用四个规则来完成此操作,每种规则一个:

RewriteRule ^([^/]+)$ search.php?q=$1
RewriteRule ^([^/]+)/([0-9]+)$ search.php?q=$2&p=$1
RewriteRule ^([^/]+)/([^/]+)$ search.php?q=$2&cat=$1&p=1
RewriteRule ^([^/]+)/([^/]+)/([0-9]+)$ search.php?q=$2&cat=$1&p=$3

将此规则放在其他规则之前,任何可以映射到现有文件的请求都将通过:

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^ - [L]

现在,您的最后一个问题是找不到外部链接的资源,这是因为您可能使用相对 URL 路径,例如 css/style.css./css/style .css。这些相对引用是从基本 URL 路径解析的,该路径是使用引用的文档的 URL 的 URL 路径。因此,如果请求 /category/keyword ,则需要像 这样的相对引用>css/style.css 解析为 /category/keyword/css/style.css 而不是 /css/style.css。使用绝对 URL 路径 /css/style.css 使其独立于实际的基本 URL 路径

关于.htaccess - 如何在 mod_rewrite 中设置可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3927527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com