Php 如何在htaccess中重写此查询字符串url的url

Php 如何在htaccess中重写此查询字符串url的url,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我已经尝试了许多重写规则,但我没有得到任何成功。我研究了很多,浪费了我的2天 我需要这个网址是这样的 我需要从中重写url 到 请指导我在htaccess中修复此问题。您可以在/tour/.htaccess文件中使用此代码: RewriteEngine On RewriteBase /tour/ # external redirect from actual URL to pretty one RewriteCond %{THE_REQUEST} /tour\.php\?page=([^\

我已经尝试了许多重写规则,但我没有得到任何成功。我研究了很多,浪费了我的2天

我需要这个网址是这样的 我需要从中重写url


请指导我在htaccess中修复此问题。

您可以在
/tour/.htaccess
文件中使用此代码:

RewriteEngine On
RewriteBase /tour/

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /tour\.php\?page=([^\s&]+) [NC]
RewriteRule ^ tour/%1? [R=302,L,NE]

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

# internal forward from pretty URL to actual one
RewriteRule ^tour/([^/.]+)/?$ tour.php?page=$1 [L,QSA,NC]

# To internally forward /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/toure/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]
另一个解决方案:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^page=([^&]+) [NC] 
RewriteRule ^tour.php$ /tour/%1? [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tour/([^/]+)/?$ /tour.php?page=$1 [QSA,L,NC]

“我已经尝试了很多重写规则”什么是?只是为了澄清一下,您希望将包含.php的url重写为较低的url?或者重定向?这看起来你不理解重写的概念。重写不允许您以某种方式神奇地转换应用程序的输出,从而使链接看起来更好或对搜索引擎更友好。你必须按照自己的逻辑去做。重写允许将传入的请求重写到http服务器,这样您就可以将一些url(如发布的第二个版本)转换为内部版本(如发布的第一个示例),这些url可以由脚本处理。因此(通常)重写用于将第二种形式转换为第一种形式,与您的要求相反。此问题的可能重复项不同。。否则我就不会在这里问两遍了,兄弟。www.site.com/abc.php#123.php到www.site.com/123.php更新:好的,我怎么做呢?然后www.site.com/abc.php到www.site.com/abc/非常感谢。这就像一个魅力。你真的是个极客。你好。我真的很高兴,但我需要所有网站的url都是这样。到你可以对现有的一个进行编辑。我会将你标记为已接受。不,它说404错误。我只需要像这样的url,但这是一个不同于你上面问的问题。通过评论添加新问题不是好的做法。我以前的回答是针对您提出的原始问题。是的,您以前的问题确实很有帮助。我在我编辑的htaccess中修复了这一点。现在它工作正常。谢谢,这实际上会导致无限循环,因为这两个规则会不断相互触发。