我想更改显示的客户端URL的结构。我不太熟练使用正则表达式和编码.htaccess文件。基本上,我的结构看起来像:
www.abc.com/login/?lang=es
我希望这在地址栏中显示为:
www.abc.com/login/es
请告诉我如何覆盖.htaccess文件中的现有网址。
由于
修改
我的目录列表
`
myproject的
------------->我的申请
-------------> settings / url directory
媒体
templates`
答案 0 :(得分:2)
您需要做的第一件事是完成所有代码并更改您的登录链接,如下所示:
www.abc.com/login/es
它会为您节省额外的连接和重定向。
然后,您需要 www.abc.com 文档根目录中的htaccess文件中的规则,以便在向/login/?lang=something
发出请求时将客户端重定向到更好看的网址:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /login/?\?lang=([^&\ ]+)
RewriteRule ^ /login/%2? [L,R=301]
然后你需要规则来在内部重写看起来更好的URL 返回到具有查询字符串的那个
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?login/(.*)$ /login/?lang=$1 [L]
如果基本URI已更改(例如,从/login
更改为/login/es
),您可能需要在登录页面中包含基本URI,以便相对链接仍可正确解析。您可以通过在页面标题中添加此标记来执行此操作:
<base href="/">