2012-10-26 58 views
1

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

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

我想这显示在地址栏中显示为:

www.abc.com/login/es

所以,请告诉我,我怎么能覆盖现有我的.htaccess文件中的网址。

感谢

编辑

我的目录列表

`

的myproject

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

------------->设置/ URL目录

媒体
templates`

+0

我不明白为什么您要首先以该格式创建网址。 Django本身理解第二种格式:第一种格式的常见原因是与仅接受查询参数的PHP CMS一起使用。 –

回答

2

你需要做的第一件事是检查所有的代码并将您的登录链接更改为:

www.abc.com/login/es 

它会为您节省额外的连接和重定向。

然后,你需要在你的htaccess文件的规则在www.abc.com文档根目录重定向时客户端请求的​​做出了更好看的URL:

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="/"> 
+0

感谢您的回复.......现在我正在活服务器上工作,所以你能告诉我在哪里我必须把这个.htaccess文件 我编辑我的问题,显示我的项目directoey列表 – user1746291

+0

最后!!!!!非常感谢@ Jon – user1746291