我正在建设一个WordPress的价格比较网站,使用WPDataTables,PHP和JavaScript。我想在我的域Map到一个静态的网址与问号追加不存在的动态网址。
我试着像这样更改我的.htaccess文件(要么一个,要么另一个,永远不要两个):
# BEGIN me
RewriteEngine On
RewriteBase /
RewriteRule ^cars/([^/]+)$ /cars/?$1 [L] <== ... either this one...but fails
RewriteRule ^cars/([^/]+)$ /cars/?$1 [L,R] <== ... or this one, it works
# END me
所以重定向功能的工作,但我认为这不是网页排名友好。真的,我的网站是全新的,我不重定向'旧的东西'。谷歌不会喜欢它,我猜。
我的期望是,如果重定向工作-那么重写也应该工作。
我真的更喜欢重写,因为它们对外界是不可见的。但这似乎并不可靠。
问题
1.假设我得到重写工作,我宁愿不使用?url参数.如果我的服务器端php可以访问原始URL和重写的URL,然后原始URL包含我需要的所有信息。但似乎这个原始URL对我的服务器端页面并不真正可见,因为我的document.location.href
已经重写。浏览器地址栏仍然显示原始的。有什么方法可以让我进入这个?
1.在这种情况下,重定向真的不是正确的方法吗?我不喜欢用户看到更新的URL,价格也有双重往返,它混淆了谷歌将“旧”Map到“新”。
1.什么可以解释重定向在重写失败的地方可靠地工作?失败意味着我得到404。我在Chrome上使用incognito来验证。重定向只是工作,但重写总是失败。
重写是一个痛苦的调试真的。我确实使用https://htaccess.madewithlove.com/验证,但这表明一切都应该是好的,在实践中它没有。
我在其他目录中没有其他.htaccess文件,我在托管方的服务器上,因此无法直接访问Apache。
1条答案
按热度按时间ig9co6j11#
我的期望是,如果重定向工作-那么重写也应该工作。
重定向会导致浏览器发出第二个请求。这会触发服务器处理其他规则。
可能发生的情况是,你有一些其他的重写规则,为
/cars
指定了一个处理程序。它甚至可能是默认的WordPress前端控制器。我不知道有什么方法可以在.htaccess中重写,然后与WordPress前端控制器兼容。您可能需要编写一个自定义的WordPress主题,如Converting Wordpress URL path into query string