是否可以为 htaccess 重写规则添加前缀
例如,变量可以用作 url 的前缀
website.com/ $variable -for-sale/
/cupcakes-for-sale/
/pies-for-sale/
/flans-for-sale/
这个想法是然后使用该变量来显示所有待售的纸杯蛋糕/馅饼/馅饼
这将如何写为重写规则?甚至可能吗?
谢谢
是否可以为 htaccess 重写规则添加前缀
例如,变量可以用作 url 的前缀
website.com/ $variable -for-sale/
/cupcakes-for-sale/
/pies-for-sale/
/flans-for-sale/
这个想法是然后使用该变量来显示所有待售的纸杯蛋糕/馅饼/馅饼
这将如何写为重写规则?甚至可能吗?
谢谢
第一条规则将负责将您丑陋的 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=302
为R=301
.
要提取变量,您需要以正确的模式使用正则表达式括号,然后您可以使用它$1
来获取组:
RewriteRule ^([^-]+)-for-sale/$ /target.php?variable=$1 [L]
“目标”部分是用于显示“变量”的脚本。由于您的问题没有提到那是什么,因此您必须弄清楚。