2013-04-07 94 views
1

我打电话给?page=about在index.php上使用GET方法(即'about'是一个选择选项)。一旦我点击提交,URL将是这样的:htaccess从页面ID重写到名称不起作用

http://example.com/?page=about

但是我想它看起来像这个:

http://example.com/about

,但保持工作的脚本(PHP) index.php(不要也不想有'about'文件),即。我希望在发送表单后使用同一页面上的GET值。我可以使PHP脚本工作,它反应良好,但URL重写根本不起作用。

我已经尝试过下面的htaccess重写,但它没有做任何事情,URL保持如上。

我的htaccess:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ?page=$1 [L,QSA] 

我将非常感谢您的帮助,因为我不知道为什么,这是行不通的。我已经通过网络进行了搜索,每个人都指出了这条规则,但对我来说它根本就没有做任何事情。

非常感谢!

编辑:

让我发表我用我的PHP代码,对不起,我错过了。我现在已经删除了action属性的,因为我在,我知道是给我相同的提交表单时,浏览器使用它:

<?php 

$page = $_GET['page']; 

switch($page){ 
case 'about': echo 'I am me'; break; 
case 'galery': echo 'Nice pictures here'; break; 
} 

?> 

<body> 

<form action="/" method="get"> 
<select name="page"> 
    <option value="about">about</option> 
    <option value="galery">galery</option> 
</select> 
<input type="submit" value="Submit" /> 
</form> 
</body> 

编辑#2:

我将action="/"添加到表单标签中,以便anubhava的解决方案工作。

+0

变化'页= $ 1'为'index.php页面= $ 1' – Jon 2013-04-07 17:35:05

+0

感谢,但没” t改变一件事,不幸 – webeno 2013-04-08 17:56:14

+0

是否启用了'mod_rewrite'?没有任何其他的东西应该是错的。该错误不适用于您发布的任何内容。 =/ – Jon 2013-04-08 20:21:48

回答

2

这应该是你的完整的.htaccess:??

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

#external redirect from /?page=about OR /index.php?page=about to /about 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php|)\?page=([^\s]+) [NC] 
RewriteRule^/%1? [R=301,L] 

#internal forward from /about to /?page=about 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+?)/?$ /?page=$1 [L,QSA] 
+0

非常感谢,这真的看起来像我在找什么,但它不幸没有改变任何东西,我的网址仍然读取'http://domain.com/?page = about' :( - 添加了我的PHP代码现在;我可能会做错什么... – webeno 2013-04-08 18:11:20

+0

您的问题已经关闭,我建议您创建一个新的问题,其中包含所有的细节和链接,以便我们可以更好地回答它。 – anubhava 2013-04-08 18:33:07

+0

现在已经重新打开如果你需要更多,请告诉我们 – webeno 2013-04-08 19:53:42

0

尝试

... 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?page=$1 [L,QSA] 

而且

我打电话?页=约使用GET方法在窗体上的index.php

尝试调用正确的链接? '​​' 而不是 '?page=about'

+0

如果你要回答,至少要使用与OP想要的相同的变量名称。 = P – Jon 2013-04-07 17:36:46

+0

@Jon Tought我改了它xD – 2013-04-07 17:38:39

+0

我粘贴了我的PHP代码,我做错了什么? – webeno 2013-04-08 18:11:37