1

是否可以为 htaccess 重写规则添加前缀

例如,变量可以用作 url 的前缀

website.com/ $variable -for-sale/

       /cupcakes-for-sale/
       /pies-for-sale/
       /flans-for-sale/

这个想法是然后使用该变量来显示所有待售的纸杯蛋糕/馅饼/馅饼

这将如何写为重写规则?甚至可能吗?

谢谢

4

2 回答 2

1

第一条规则将负责将您丑陋的 URL 重定向到 Friendly like one。

第二条规则将在内部将其重定向回来,以便浏览器 URL 在为您的页面内容提供服务时保持友好 URL。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

# Redirect /?cake=anything to /anything-for-sale/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+\?cake=([^&\s]+) [NC]
RewriteRule ^ /%1-for-sale/? [R=302,L]

# Internally forward /anything-for-sale/ to /?cake=anything
RewriteRule ^([^-]+)-for-sale/?$ /?cake=$1 [NC,L]

请记住,我R=302总是更好地使用302它,这意味着在将新规则设为永久之前测试新规则时临时重定向,因为永久会将信息缓存到您的浏览器。确认规则按预期工作后,更改R=302R=301.

于 2013-09-05T15:23:42.550 回答
0

要提取变量,您需要以正确的模式使用正则表达式括号,然后您可以使用它$1来获取组:

RewriteRule ^([^-]+)-for-sale/$ /target.php?variable=$1 [L]

“目标”部分是用于显示“变量”的脚本。由于您的问题没有提到那是什么,因此您必须弄清楚。

于 2013-09-05T15:21:03.727 回答