我正在尝试制作.htaccess
,但我们遇到了一些困难。
以下是我需要的示例,记住一切都必须在同一个网址上。
1)每当用户访问该网站时,都希望在URL的末尾添加/home/
。
Before: http://app.meusite.com/
After: http://app.meusite.com/home/
2)我希望所有网址都被移除.php
。
Before: http://app.meusite.com/login.php
After: http://app.meusite.com/login/
3)我想要所有的URL如下:
之前:
http://app.meusite.com/usuario-adicionar.php
http://app.meusite.com/usuario-editar.php
http://app.meusite.com/usuario-excluir.php
之后:
http://app.meusite.com/usuario/adicionar/
http://app.meusite.com/usuario/editar/
http://app.meusite.com/usuario/excluir/
只需注意一个注意事项......
由于整个网站都是多语言的,因此必须全部接受将获得LANG = LANGUAGE
的参数页面(例如:lang = en_US
)。
然后上面的所有网址,也必须接受GET外衣,并希望保留如下:
http://app.meusite.com/index.php?lang=en_US
http://app.meusite.com/home/en_US/
http://app.meusite.com/login.php?lang=en_US
http://app.meusite.com/login/en_US/
http://app.meusite.com/usuario-adicionar.php?lang=en_US
http://app.meusite.com/usuario/adicionar/en_US/
http://app.meusite.com/usuario-editar.php?lang=en_US
http://app.meusite.com/usuario/editar/en_US/
http://app.meusite.com/usuario-excluir.php?lang=en_US
http://app.meusite.com/usuario/excluir/en_US/
我希望它能理解我的问题。而且,你能帮我做一下吗?
下面,我的尝试:
Options -MultiViews
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^home\/?(.*)\/?$ index.php?lang=$1 [L]
RewriteRule ^([^/]*)\/?(.*)\/?$ $1.php?lang=$2 [L]
RewriteRule ^([^/]*)\/([^/]*)\/([^/]*)\/?$ $1-$2.php?lang=$3 [L]
答案 0 :(得分:0)
在删除文件扩展名之前,首先需要确保打开MultiViews。此外,如果您担心搜索引擎可能将您的网页编入索引为重复内容,则应在HTML标题中包含一个规范元标记,以描述您希望链接的外观。它应该是这样的:
<link rel="canonical" href="http://example.com/post/post-title/">
要取消文件扩展名并添加正斜杠,您需要这段代码。
#turn on Multiviews if not already turned on
Options +MultiViews
#takes off the .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
#adds the trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
我从这里学到了这一点,并成功地使用了我自己的.htaccess文件中的代码。我还没有弄清楚如何处理问题的多语言方面。我从未遇到过这个问题。但是当我睡得更好的时候,我会做一些研究,如果我发现任何有用的东西,我会回到这里。感觉就像答案正在盯着我。
修复后,请不要忘记执行301重定向。