我到处寻找合适的解决方案/方法,但我似乎无法找到对我有用的任何东西。 我甚至问朋友,他们帮助但没有人占上风。
我要做的是,更改浏览器中显示的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
那么我做错了什么它不起作用?
答案 0 :(得分: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]
答案 1 :(得分:0)
您可以使用内部重定向,但不会更改您的网址,但会将您的请求映射为您想要的内容。
你想要的是不可能的,因为:
Htaccess和重写是在服务器端。请求到达服务器,需要在服务器端重写,您需要在客户端URL栏中更改它。
为实现此目的,服务器应发送一个重定向,其中包含您所期望的URL。这就是为什么重定向是强制性的。服务器无法重写客户端网址,只能发送重定向响应。
内部重定向可以模拟您的请求是您所期望的,但它对客户来说是透明的。
顺便说一句,永久重定向是这里的正确解决方案,用于通知用户并让他们知道资源已被更改并更新书签/ api /等。