我想要一个漂亮的网址,可以将https://www.url.com/profile.php/?lang=en&user=1#userinfo更改为https://url.com/profile/en/1#userinfo。 lang变量在每一页上都有。
我试图将我的扩展程序取消并且可以正常工作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
但现在我需要获取变量,我已经环顾四周但没有任何效果。
答案 0 :(得分:1)
这些规则检查请求行(e.g., "GET /index.html HTTP/1.1")
,请求路径为/profile.php
,如果包含查询字符串lang=&user=
,请将请求uri从/profile.php
重定向到{{ 1}},/profile/%1/%2
,%1
是匹配分组部分的后引用%2
([^&]+)
此规则内部会重写从RewriteCond %{THE_REQUEST} ^[A-Z]+\ /profile\.php
RewriteCond %{QUERY_STRING} lang=([^&]+)&user=([^&]+)
RewriteRule ^/?profile.php$ /profile/%1/%2 [NE,R,L,QSA]
到/profile/{lang}/{user_id}
的网址。因此,当请求uri /profile.php?lang={lang}&user_id={user_id}
时,服务器知道重写的uri是/profile/en/1
。
/profile.php?lang=en&user_id=1