覆盖django的.htaccess文件中的url

时间:2012-10-26 03:54:40

标签: django .htaccess django-urls

我想更改显示的客户端URL的结构。我不太熟练使用正则表达式和编码.htaccess文件。基本上,我的结构看起来像:

www.abc.com/login/?lang=es

我希望这在地址栏中显示为:

www.abc.com/login/es

请告诉我如何覆盖.htaccess文件中的现有网址。

由于

修改

我的目录列表

`

  

myproject的

------------->我的申请

-------------> settings / url directory

  

媒体
  templates`

1 个答案:

答案 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="/">