【发布时间】:2014-10-01 12:19:53
【问题描述】:
我正在开始学习 PHP 和 .htaccess 的第一步,我的大部分新网站都是关于主要类别和少数子类别的。 以下是我在开发 .htaccess RewriteEngine 之前的链接示例:
- example.com/index.php?cat=email
- example.com/index.php?cat=about&show=some
在 .htaccess RewriteEngine 的帮助下,我将它们转换为:
- example.com/email/
- example.com/about/some/
这是 .htaccess 的一部分:
RewriteRule ^([A-Za-z0-9-]+)/$ index.php?cat=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/$ index.php?cat=$1&show=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)$ index.php?cat=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ index.php?cat=$1&show=$2 [L]
现在的问题是大多数内容都有内部链接,例如:“example.com/index.php?cat=about&show=some” 全部更改是选项,但无论如何......还有什么可以做的吗?我听说过一些 .htaccess 选项可以将链接自动转换为您需要的格式,而无需手动更改它们,因此 PHP 页面中的所有链接都是相同的,但是一旦用户加载页面,链接就会像(example.com/about/some/ ) 有没有类似的东西,或者有没有其他选项可以保留原始链接而不全部更改?
干杯!
【问题讨论】:
-
这对您的服务器来说是一种超载,也是一种不好的做法。你应该总是让它思考友好,这样你就只需要规则一次,而不是必须双重重定向以获得正确的结果。您还可以将当前规则恢复为 2 条规则。通过使用
?,例如:RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?cat=$1 [L],您将有 2 个规则来完成您需要的所有操作,而不是 4 个,也可以恢复为单个规则,但为了清楚起见,最好使用 2。 -
干杯!只是改为两行而不是四行: RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?cat=$1 [L] RewriteRule ^([A-Za-z0-9-] +)/([A-Za-z0-9-]+)/?$ index.php?cat=$1&show=$2 [L]
标签: php .htaccess mod-rewrite