我正在尝试创建一个 .htaccess
,但我们遇到了一些困难。
以下是我需要的示例,记住所有内容都必须在同一个 URL 上。
1) 每当用户访问网站时,都希望在 URL 末尾添加 /home/
。
Before: http://app.meusite.com/
After: http://app.meusite.com/home/
2)我希望所有的 URL 都被删除
.php
。Before: http://app.meusite.com/login.php
After: http://app.meusite.com/login/
3)我想要所有如下所示的网址:
前:
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
)。那么上面的所有 URL,也必须接受 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]
最佳答案
在删除文件扩展名之前,您需要首先确保 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 重定向。
关于php - 如何创建这样的 ".htaccess"文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31676703/