【发布时间】:2019-04-01 18:43:54
【问题描述】:
我尝试了在 StackOverflow 上找到的几种解决方案,但它们似乎都不起作用。
首先,在文档根目录上,我有 .htaccess 文件 和 index.php 来检测语言并重定向到 /fr/ 目录或 /en/ 目录。
然后我有 index.html 文件和一个名为“pages”的目录,它们都是我的页面。这样,所有的 url 就像http://example.com/fr/index.html 或http://example.com/fr/pages/a.html。
我想:
-
隐藏“index.html”。如果我没记错的话,这个解决方案是 很好:
RewriteEngine On RewriteRule ^index\.html$ / [R=301,L] -
隐藏 html 和 php 扩展。我用了这个,它奏效了 对 php 很好,但对 html 不行……不知道为什么。
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+?)/?$ $1.php [NC,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+?)/?$ $1.html [NC,L] 隐藏页面目录(我不介意 /fr/ 或 /en/ 目录 显示),因此 URL 将是这样的(最后):http://example.com/fr/a
这是我的结构
├── fr
| └── index.html
| └── pages
| └──a.html
| └──b.html etc
├── en
| └── index.html
| └── pages
| └──a.html
| └──b.html etc
├── .htaccess
└── index.php
【问题讨论】:
-
index.php的用途是什么,似乎服务器只看到index.php而不是index.html -
您必须手动执行操作,尝试
RewriteRule ^/fr/a/?$ fr/a.html [NC,L]您的重定向链接将是 example.com/fr/a 可能会为您带来魔力 -
您的“网站结构”是否完整?如果是,那么就没有必要“隐藏 php 扩展”——因为你没有任何!?此外,
a.html、b.html等真的是单字符基本名称(如您的示例中所示)吗?如果是,则可以进一步简化指令。