1

我正在尝试使用 Apache 和 PHP 进行一些 URL 重写。这是出于 SEO 原因,因此 foo.com/product-category/product-title 变为 foo.com/product.php?id=999。我当然希望 URL 不改变并且是 SEO 友好的版本。

我有一个当前的站点,它有一个工作设置,但它非常是一个 hack,而不是一个可维护的解决方案,所以我正在努力做正确的事情!

目前我有: -

RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) /url_redirect.php?page=$1 [QSA,L]

完美的工作, http: //foo.com/random-url ?foo=1&bar=2 以 $_GET['page'] = 'random-url' 和 $_GET['foo'] 结束于 /url_redirect.php = 1 等等等等。

如果您更深一层,我希望发生完全相同的事情(例如http://foo.com/non-existing-directory/random-url?foo=1&bar=2

可以将不存在的目录设为真正的目录,然后从那里 .htaccess 但必须有一种更简单的方法。我希望我不必对任何目录名称进行硬编码(这就是我当前解决方案的工作方式)。

我认为问题可能是正则表达式不正确,他们总是打败我。

4

1 回答 1

1

我刚刚尝试过,但可能不是实现它的最佳方法(我不是重写大师)

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/([a-zA-Z0-9_\ \-\%]+)?($) url_redirect.php?page=$2 [QSA,L]
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) url_redirect.php?page=$1 [QSA,L]

抱歉,这是我的本地设置,这就是我认为您想要的方式!

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/([a-zA-Z0-9_\ \-\%]+)?($) /url_redirect.php?page=$2 [QSA,L]
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) /url_redirect.php?page=$1 [QSA,L]

注意 url_redirect.php 之前的 /

于 2012-11-24T11:55:46.903 回答