2

我最近在 Joomla 开始了项目。我不得不从中删除 index.php (这是配置设置中的一些复选框)。我已经找到了怎么做。目前实际上所有的 URL 都是在没有 index.php 的情况下创建的。

但是,我可以直接输入 URL http://mywebsite.com/index.php/article-name并且它不会重写为http://mywebsite.com/article-name。如果我有一个菜单,那么 URL 正在正确创建(http://mywebsite.com/article-name - 所以没有 index.php)。

所以问题是:如何为带有 index.php 的网站创建 htaccess 重定向到没有 index.php 的网站。

4

2 回答 2

2

由于您在内部将内容路由到 index.php,因此您必须匹配实际请求:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index\.php/[^\ ]+
RewriteRule ^index\.php/(.*)$ /$1 [L,R=301]
于 2012-12-18T10:59:24.303 回答
1

转到您的全局配置页面并进行以下更改:

  1. 打开 SEF(搜索引擎友好)URL 选项。
  2. 对 Apache mod_rewrite 说“是”
  3. 拒绝向 URL 添加后缀
  4. 对 Unicode 别名说不
  5. 拒绝以在页面标题中包含站点名称。

还将 htaccess.txt 更改为 .htaccess。现在在“重定向到此处”处添加新的重定向代码。

代码

#### 开始 - 301 重定向

#

RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+/)*(index|home).html?\ HTTP/

RewriteRule ^(([^/]+/)*)(index|home).html?$ http://www.example.com/ $1 [R=301,L]

#

RewriteCond %{THE_REQUEST} !^POST

RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^/]+/)*index.php\ HTTP/

RewriteCond %{SERVER_PORT}>s ^(443>(s)|[0-9]+>s)$

重写规则 ^(([^/]+/)*)index.php$ http%2://www.example.com/$1 [R=301,L]

#

RewriteCond %{HTTP_HOST} !^(www.example.com)?$

重写规则 (.*) http://www.example.com/ $1 [R=301,L]

#

#### 结束 - 301 重定向

注意:使用您的站点名称删除 www.example.com。

于 2013-01-09T05:04:08.857 回答