2012-04-05 32 views
2

上周有一天,我的电子商务网站上的所有表单都停止工作(最重要的是这意味着结帐无效)。我的网站是用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发送的表单数据不会传递到下一页,因为表单指向的是没有结尾斜杠的网页。我通过简单地向我的表单指向的地址添加尾部斜线来暂时解决了我的网站问题。

我对这个解决方案并不满意,但是我希望我的网页能够回到它们的样子 - 没有斜线。特别是我担心对搜索引擎优化工作的影响,因为我知道有和没有尾随斜线的页面完全被认为是不同的页面。最奇怪的是,如果我创建了一个新页面,即使它与旧页面相同,它也没有结尾斜杠。

我想知道有没有人知道为什么这种改变是突然发生的,以及我会如何解决这个问题。我的虚拟主机目前运行PHP版本5.2.17。

+0

您是否以编程方式创建链接?如果是这样,你能显示那个函数的代码吗? – konsolenfreddy 2012-04-05 05:05:23

回答

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指令将为您提供有关重写的更多信息,可能会发生一些情况。

+0

谢谢你的帮助。事实上,将'DirectorySlash Off'代码添加到我的htaccess文件中已经成功了! – sam8perry 2012-04-05 23:43:23