3

我是 Joomla 和 WAMP 环境的新手。我正在使用 WAMP 环境:

  • Win Srv 2003 R2 (Std Ed) 与 SP2 和所有最近的更新
  • 阿帕奇 2.2.9
  • PHP 5.2.6
  • Joomla 1.5.14

我想用 Joomla SEF URL 启用 mod_rewrite,但它不能一起工作。

  • 如果我将“SEF URLs”和“Add suffix to URLs”设置为“是”,它可以工作。
    结果:/index.php/page.html

  • 如果我将 'mod_rewrite' 和 'Add suffix to URLs' 设置为 Yes,它不会给出任何错误(不确定它是否按预期方式工作)。
    结果:/index.php?option=com_content&view=article&id=3&Itemid=5

  • 如果我将“SEF URLs”和“mod_rewrite”设置为“是”,那么它会给我“404 Not Found”错误。
    结果:未找到 | /pagename在此服务器上找不到请求的 URL

  • 如果我将 'SEF URLs' + 'mod_rewrite' + 'Add suffix to URLs' 设置为是,那么它会给我“404 Not Found”错误。
    结果:未找到 | /pagename.html在此服务器上找不到请求的 URL

我使用的是 Joomla 提供的默认 .htaccess,代码如下:

 

## 如果导致错误可以被注释掉,见上面的注释。
选项 +FollowSymLinks

#
# mod_rewrite 正在使用中

重写引擎开启


########## Begin - 重写规则以阻止一些常见的漏洞利用
## 如果您在网站上遇到问题,请阻止下面列出的操作
## 这试图阻止最常见的利用类型“尝试”到 Joomla!
#
# 阻止任何试图通过 URL 设置 mosConfig 值的脚本
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# 阻止任何试图通过 URL 发送 base64_encode 废话的脚本
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# 屏蔽任何在 URL 中包含标签的脚本
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
# 阻止任何试图通过 URL 设置 PHP GLOBALS 变量的脚本
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# 阻止任何试图通过 URL 修改 _REQUEST 变量的脚本
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# 将所有被阻止的请求发送到带有 403 Forbidden 错误的主页!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - 重写规则以阻止一些常见的漏洞利用

# 如果您的网络服务器的 URL,请取消注释以下行
# 与物理文件路径没有直接关系。
# 更新你的 Joomla!目录(仅 / 用于 root)

 重写基础 /abc  
# /abc 是 htdocs 中 joomla 安装的子目录

########## 开始 - Joomla!核心 SEF 部分
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## 结束 - Joomla!核心 SEF 部分



在 httpd.conf

  • 我有LoadModule rewrite_module modules/mod_rewrite.so活动(未注释#
  • 它在 Apache 的模块文件夹中有mod_rewrite.so 。

我不确定我还需要做什么才能使其正常工作。我检查了几乎所有论坛的帖子和博客。然而,没有任何帮助。

我也有 PHP_MAILER 问题,但这并不重要。我感谢您的帮助。如果您需要更多详细信息来解决此问题,请告诉我。

亲切的问候

DM

4

1 回答 1

8

我找到了问题的答案:我在 httpd.conf 中添加了目录,但 AllowOverride 设置为 None 而不是 All 以允许 .htaccess 生效。

AllowOverride All 需要在那里才能使 apache 与 .htaccess 一起工作。代码看起来像:

<目录“D:/Apache/htdocs/joomla”>
    允许覆盖所有
    选项 无
    命令允许,拒绝
    允许所有人
</目录>

随着上述更改需要有“RewriteBase /”
(设置为 on,ieuncomment RewriteBase /)

于 2009-10-15T19:02:25.270 回答