加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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重定向.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读