上周的一天,我的电子商务网站上的所有表单都停止了工作(最重要的是,结账不起作用)。我的网站是用XHTML和PHP编写的。我没有对网站的代码进行任何更改,因此假设我的网站托管服务商对我的托管设置进行了一些更改。无论如何,他们都毫无希望,并告诉我他们没有改变任何内容,并建议我网站上的代码有问题。
我目前在我的htaccess文件中使用以下代码来删除我的网页地址的php扩展(我担心我真的不明白这个代码我刚从互联网上复制并粘贴它,但它似乎似乎工作):
# Remove the need for php extension to web page addresses
RewriteCond %{REQUEST_URI} ^(.*[^/])/?$
RewriteCond %{DOCUMENT_ROOT}%1.php -f
RewriteRule .+ %1.php [QSA,L]
在完成错误后,我意识到,由于没有明显的原因,我的所有URL现在都添加了斜杠。这意味着通过POST发送的表单数据没有传递到下一页,因为表单指向没有尾部斜杠的网页。我暂时修改了我的网站,只需在我的表单指向的地址中添加一个尾部斜杠。
我对这个解决方案不满意,但是因为我希望我的网页能够恢复原状 - 没有拖尾的斜线。特别是我担心对SEO工作的影响,因为我知道一个带有和没有尾部斜线的页面被完全视为一个不同的页面。最奇怪的是,如果我创建一个新页面,即使它与旧页面相同,它也没有尾部斜杠。
我想知道是否有人知道为什么这个改变已经突然发生以及我如何解决这个问题。我的网站托管目前运行PHP版本5.2.17。
答案 0 :(得分:0)
这听起来像Apache的mod_dir模块可能会起作用;向URL添加尾部斜杠是该模块的一个关键功能:http://httpd.apache.org/docs/2.0/mod/mod_dir.html
您可以将DirectorySlash Off
放入.htaccess文件中,看看是否有效。 RewriteOptions AllowNoSlash
也可能让你到达某个地方。
或者,RewriteLog "rewrite.log"
和RewriteLogLevel 3
指令将为您提供有关重写的更多信息,可能会在那里进行。