Php 使用mod_rewrite来回重写URL
也许这看起来是一个非常简单的问题,我的网站的url写得非常好,所以我想重写它们。所以我准备激活mod_rewrite。问题如下:Php 使用mod_rewrite来回重写URL,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,也许这看起来是一个非常简单的问题,我的网站的url写得非常好,所以我想重写它们。所以我准备激活mod_rewrite。问题如下: 假设我的url从site\u url/index.php?page=mypage&type=mytype切换到site\u url/mypage/mytype,如果刷新页面会发生什么情况,是否有必要在.htaccess文件中加入进行重写的相反过程?在.htaccess中,您应该前进一个映射到 ^/(mypage)/(mytype) to index.php?page=
假设我的url从
site\u url/index.php?page=mypage&type=mytype
切换到site\u url/mypage/mytype
,如果刷新页面会发生什么情况,是否有必要在.htaccess文件中加入进行重写的相反过程?在.htaccess中,您应该前进一个映射到
^/(mypage)/(mytype) to index.php?page=$1&type=$2
但反过来就不必管了。因此,直接请求site\u url/index.php?page=mypage&type=mytype
只需按原样传递即可
因此,刷新不会改变任何东西。您需要重定向和重写的组合。URL重写过程的大纲草案如下:
- 如果URL包含
,301/302将请求重定向到其SEO友好版本。这将更改浏览器地址栏中的地址.php
- 如果请求SEO友好的URL,请将其重写为PHP版本。这不会更改浏览器地址栏中的地址
#
# redirect /index.php?page=somepage&type=sometype to friendly url
#
RewriteCond %{THE_REQUEST} /index\.php
RewriteCond %{QUERY_STRING} page=(\w+)&type=(\w+)
RewriteRule ^index\.php$ /%1/%2? [R,L]
#
# rewrite /somepage/sometype to index.php
#
RewriteRule ^(\w+)/(\w+)$ index.php?page=$1&type=$2
你想怎么重写?浏览器中的URL是什么,内部应该是什么样子?@OlafDietsche我希望这个URL站点\u URL.index.php?page=mypage&type=mytype显示为site\u URL/mypage/mytype,所以我想知道刷新页面站点\u URL/mypage/mytype时发生了什么,当我使用代码路由不支持的同一个url发出get请求时,会发生什么?url从不从
site\u url/index.php?page=mypage&type=mytype
切换到site\u url/mypage/mytype
,情况正好相反,我认为这就是造成混淆的原因。第一步是在浏览器的地址栏中输入site\u url/mypage/mytype
。它是一直显示的URL,其路径甚至不必存在。下一步是使用mod_rewrite指令捕获该请求,以静默方式将其映射到现有资源(如PHP文件)。此操作是隐藏的,由“pretty”URL触发,而不是相反。事实上,我的问题是当我刷新页面站点时会发生什么?URL/mypage/mytype,以及当我使用代码路由没有的相同URL发出get请求时会发生什么supporting@user1611830,你所说的“代码路线”是什么意思?重定向?重写?需要特殊性。此外,刷新和刷新get请求没有什么不同,只是浏览器不会对某些附加项使用缓存。