php – 如何创建这样的“.htaccess”文件?
发布时间:2020-12-13 22:23:12 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试创建.htaccess,但我们遇到了一些困难. 以下是我需要的示例,记住一切都必须在同一个URL上. 1)每当用户访问网站时,都希望在URL的末尾添加/ home /. Before: http://app.meusite.com/ After: http://app.meusite.com/home/ 2)我希望所有URL都删除.php
我正在尝试创建.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)我想要所有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] 解决方法
在删除文件扩展名之前,您需要先确保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重定向. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |