2015-10-02 180 views
2

我已到处寻找以找到适当的解决方案/方法,但我似乎无法找到任何为我工作的内容。 我甚至问朋友,他们帮助,但没有流行。使用htaccess在浏览器中更改URL而不进行重定向

我想要做的是更改浏览器中显示的URL,但仅限于此。 (没有重新分页,页面重新加载)。 我想要做到这一点,使我的UCP在浏览某些页面/文件时看起来更清晰。

我想达到什么目的? 继承人在配置文件为例,网址是:

mysite.com/ucp/profile.php?player=Heartfire 

不过,我希望它看起来像

mysite.com/ucp/profile/heartfire 

还是其他什么东西!我只是想摆脱后参数.PHP

我试过了谷歌和本网站发现的各种例子,但似乎没有工作,有人请指导我一路走来实现结果。

到目前为止我试过了什么? 这里是什么,我尝试过了几个例子:

RewriteRule ^profile/([0-9]+)/?$ /ucp/profile.php?player=$1 
RewriteRule profile.php?player=$1 profile.php [NC,L] 
RewriteRule ^profile$ profile.php?player=$1 

所以我在做什么错了,这是不工作?

回答

1

将下面的.htaccess文件的网站的根目录下:

RewriteEngine On 

RewriteCond %{THE_REQUEST} ^GET\ /ucp/profile\.php?([^=]+)=(\S+) [NC] 
RewriteRule ^ucp/profile\.php$ /ucp/%1/%2? [R=301,L,NC] 

# Now, deal with internal rewrites (which will not cause redirection): 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^ucp/([^/]+)/([^/]+)/?$ /ucp/profile.php?$1=$2 [NC,L] 
+0

这奏效了(只好稍微修改它,以确保它没有让你回到主画面)。但是,它似乎没有加载UCP的CSS。 – Heartfire

+1

@Heartfire在'profile.php'文件中使用''元素。 – hjpotter92

+0

这个伎俩!感谢所有的帮助,我会把这个新获得的知识用得很好。 – Heartfire

0

您可以使用内部重定向,它不会改变您的网址,但会根据您的要求映射您的请求。

你想要什么是不可能的,因为:

的.htaccess和改写是在服务器端。请求到达服务器,需要在服务器端重写,并且需要在客户端url栏中进行更改。

为了达到这个目的,服务器应该发送一个重定向到你想要的url。这是为什么重定向是强制性的。服务器无法重写客户端网址,只能发送重定向响应。

内部重定向可以模拟你类似请求的东西是你所期望的,但它对于客户端来说是透明的。

顺便说一句,永久重定向是在这里正确的解决方案来通知用户,并让他们知道资源已被更改并更新书签/ API /无论。

相关问题