我希望为以下内容添加重写规则,但似乎无法使其发挥作用。我不想传递任何查询字符串,但我需要在规则中添加一个。
我想要这个网址:
https://example.co.uk/vehicles/
指向:
https://example.co.uk/search-results/?category=1
但请保留地址栏中的第一个网址。 我需要传入一个名为category的变量值。
我尝试了以下但是它对我不起作用:
rewriterule ^vehicles/$ search-results/?category=1 [NC, L]
任何帮助都将不胜感激。
RewriteEngine On
RewriteRule .* ? [F,L]
RewriteRule ^(.*)$ https://example.co.uk/$1 [R,L]
RewriteRule ^ad/(.*/)?([0-9]+)$ view-ad/?ad=$2 [NC,L]
RewriteRule ^vehicles/$ search-results/?category=1 [NC,L]
答案 0 :(得分:0)
我设法解决了这个问题。这是由于页面上的Ajax负载。
很高兴您解决了初始查询,但是,您发布的.htaccess
文件中的以下两个指令会破坏您的网站,因此可能已经删除了这些指令?
RewriteRule .* ? [F,L] RewriteRule ^(.*)$ https://example.co.uk/$1 [R,L]
第一个指令只是阻止对您网站的所有访问,返回403 Forbidden响应。第二个指令将导致重定向循环。
既然它有效又可以有另一个重写规则执行此操作
https://example.co.uk/vehicles/?something=1
并重写为https://example.co.uk/vehicles/?category=1&appendsomething=1
但只显示https://example.co.uk/vehicles/
我认为你的意思是https://example.co.uk/search-results/?category=1&something=1
(而不是/vehicles/
) - 其中something=1
> 在查询字符串的末尾?
您无法将此“显示为https://example.co.uk/vehicles/
” - 因为这会与现有(工作)指令冲突。
但是,您可以修改现有指令以处理/?something=1
的请求,并将其传递给替换。这只需要添加QSA
标志(查询字符串追加)。例如:
RewriteRule ^vehicles/$ search-results/?category=1 [QSA,NC,L]
QSA
标志会将请求中的查询字符串附加到RewriteRule
替换中指定的查询字符串的末尾。
更新:要将HTTP重定向到HTTPS,您需要以下内容:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.co.uk/$1 [R,L]
请注意前面的RewriteCond
指令 - 这可确保仅重定向HTTP请求,而不是所有(HTTP和HTTPS),因此避免重定向循环。最终,这也应该是301(永久)重定向,因此您应该将R
更改为R=301
,但只有当您确定它正常工作时才会这样。