URL RewriteRule不起作用。我的网址随每个表单提交而附加到自身

时间:2014-10-17 20:00:24

标签: php forms mod-rewrite

我有一个主要网址:

http://localhost/alias

我有一个RewriteRule

Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

并有这样的形式:

<form name="quick-search-form" action="test/action" method="POST">

每当我点击提交时,它每次都会继续放置一个级别(没有测试/操作,顺便说一下。如果它返回到index.php,则用于测试表单标记?url =)。

http://localhost/alias/id/
http://localhost/alias/test/action/id
http://localhost/alias/test/action/test/action/id

...

改为GET给了我(几次之后):

http://localhost/alias/test/action/test/action/test/action/test/action/id?quick-search-select=student

我希望它转到http://localhost/alias/test/action(我的参数在帖子数据中)。看起来它将新的“测试/操作”表单操作附加到URL的“id”部分。请注意每个新提交的内容如何消失。

页面实际上是正确的位置,这是默认位置,因为没有测试控制器。但它一直把它放在URL的末尾。如果我放一个现有的网址

为什么它会从表单标记中追加?如果重要,请使用IIS。

1 个答案:

答案 0 :(得分:1)

您在action属性中使用了相对网址,因此实际路径是前置的。

您必须设置基本路径或使用/alias/test/action之类的绝对网址。

要添加基本路径,您可以在html的头部添加:

<base href="/alias/">