Php 使用htaccess对文件夹进行url重写和重定向

Php 使用htaccess对文件夹进行url重写和重定向,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,好的,我对URL重写和重定向的问题还不熟悉。我在Google&Stackoverflow上下搜索了一个可行的答案,但似乎什么都不可行 我想要完成的是。。。 点击这个链接:mysite.com/research/index.php?quote=goog 然后将其转换并重定向到以下位置:mysite.com/research/goog URL字符串末尾的“goog”是从放置在URL中的表单抓取的,这有关系吗?下面是用来抓取“goog”的代码 下面是我的htaccess文件中唯一的代码片段,它无法工作

好的,我对URL重写和重定向的问题还不熟悉。我在Google&Stackoverflow上下搜索了一个可行的答案,但似乎什么都不可行

我想要完成的是。。。 点击这个链接:
mysite.com/research/index.php?quote=goog

然后将其转换并重定向到以下位置:
mysite.com/research/goog

URL字符串末尾的“goog”是从放置在URL中的表单抓取的,这有关系吗?下面是用来抓取“goog”的代码

下面是我的htaccess文件中唯一的代码片段,它无法工作!我做错了吗?我的代码有什么遗漏吗?我把我的代码放在根目录(mysite.com)上,我应该把它放在“research”文件夹中吗?(mysite.com/research/)


我的主机/服务器是否可能不接受.htaccess文件?我应该在web.config文件中执行此操作吗?如果是,我如何将上述代码转换为工作的web.config文件

这应该适合您:

RewriteEngine On
RewriteCond %{QUERY_STRING} "quote=([^&]+)"
RewriteRule ^/research/index.php /research/%1? [R,L]

查询字符串是URL请求的一个单独部分,因此需要显式检查。通过使用RewriteCond,您可以说如果'quote'参数存在,您将捕获它的值(通过获取它后面所有不是'&'的字符)。这将填充可在重写本身中使用的%1变量

以下是您在
/research/.htaccess
文件中需要的规则:

RewriteEngine On
RewriteBase /research/

RewriteCond %{THE_REQUEST} /index\.php\?quote=([^\s&]+) [NC]
RewriteRule ^ %1? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?quote=$1 [L,QSA,NC]
index.php
中访问它,方法是:

$quote = $_GET['quote'];`

谢谢你的回复!由于某种原因,它不起作用。我在根文件夹和研究文件夹两个位置都试过了。。。处理需要一段时间吗?我假设如果我实时推送它并测试它,那么它应该在我实时推送它后立即工作,对吗?这需要进入根目录。不确定你的主机是如何配置的,所以恐怕无法评论如何应用。谢谢你的回复。。。我尝试了提供的代码,但仍然不起作用。这里是索引页上使用的表单代码
您的.htaccess的位置是什么?您必须使用
$\u GET['quote']
no POST here.mysite.com/research/.htaccess是文件的位置。即使我改为“获取”,它仍然不起作用。表单应该是这样的吗<代码>首先,让我们在不使用任何
的情况下使其工作。以上规则就绪后,在浏览器中输入此URL时会发生什么:
http://domain.com/research/index.php?quote=goog
?当我查看您显示的链接时,它只是重新加载页面,URL没有改变,我甚至尝试访问:
mysite.com/research/goog
,出现404错误
$quote = $_GET['quote'];`