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 发送的表单数据不会传递到下一页,因为表单指向没有尾部斜杠的网页。我通过简单地在我的表单指向的地址中添加一个斜杠来临时修复了我的网站。

但是我对这个解决方案不满意,因为我希望我的网页恢复原样 - 没有尾部斜杠。特别是我担心对 SEO 工作的影响,因为我知道带有和不带有斜杠的页面被认为是完全不同的页面。最奇怪的是,如果我创建一个新页面,即使它与旧页面相同,它也没有斜杠。

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

4

1 回答 1

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会给你更多关于重写的信息,那里可能会发生一些事情。

于 2012-04-05T08:52:09.533 回答