URL重写问题,头大了

2016-07-07 15:31 来源:www.chinab4c.com 作者:ecshop专家

我在本机上建了APMServer集成环境.系统是XPpro,按照docs/urlrewrite.txt的说明设置了相关的参数,但启用url重写后,出现404错误,求救老大!!!
错误代如下:

Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.

If you think this is a server error, please contact the webmaster.

Error 404
192.168.1.103
08/03/07 13:10:18
Apache/2.2.3 (APMServ) mod_ssl/2.2.3 OpenSSL/0.9.8d PHP/5.2.0

回答:
为什么没人理我?

麻烦你 请写出你的详细设置步骤贴出你的配置文档

要不怎么让别人替你分析呢?

各环境配置版本:
Apache 2.2.3 [HTTP服务器]
PHP 5.2.0 [PHP脚本解释引擎]
MySQL 5.0.27 [MySQL数据库服务器]

#APMServ默认虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
ServerName *
DocumentRoot "D:/APMServ5.2.0/www/htdocs"
</VirtualHost>
<Directory "D:/APMServ5.2.0/www/htdocs">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>

#phpMyAdmin配置信息
Alias /phpmyadmin "D:/APMServ5.2.0/www/phpMyAdmin"
<Directory "D:/APMServ5.2.0/www/phpMyAdmin">
AllowOverride None
Options Indexes FollowSymLinks Includes
Order allow,deny
Allow from all
</Directory>

#SQLiteManager配置信息
Alias /sqlitemanager "D:/APMServ5.2.0/www/SQLiteManager"
<Directory "D:/APMServ5.2.0/www/SQLiteManager">
AuthUserFile "D:/APMServ5.2.0/SQLiteManPwd.ini"
AuthType Basic
AuthName "SQLiteManager管理员登录"
require valid-user
AllowOverride None
Options Indexes FollowSymLinks Includes
Order allow,deny
Allow from all
</Directory>

#APMServ配置ASP支持
ProxyPass/asphttp://127.0.0.1:10322
ProxyPassReverse/asp/http://127.0.0.1:10322/

#APMServ配置由可视化界面自动创建的虚拟主机,如需手工创建虚拟主机,请不要将代码放在vhost.conf文件内。
Include conf/apmserv/vhost.conf
Include conf/apmserv/vhost_ssl.conf

#APMServ配置由可视化界面自动创建的虚拟目录,如需手工创建虚拟目录,请不要将代码放在vdir.conf文件内。
Include conf/apmserv/vdir.conf


完毕!=========================================

没看到你还没有贴完~~~~

你再仔细检查一下有没有按照官方的说明来设置

请看你来原来的虚拟主机的配置文档

官方明确要求: /ecshop 是官方假设的商店根目录
  1. <Directory /ecshop>
  2. Options FollowSymLinks
  3. AllowOverride All
  4. </Directory>
复制代码
而你的配置为
  1. <Directory />
  2. Options FollowSymLinks
  3. AllowOverride None
  4. Order deny,allow
  5. Deny from all
  6. Satisfy all
  7. </Directory>
复制代码


看看是不是不符合要求

不知道我分析得对不对,待你修改后测试再做分析!


#APMServ默认虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
ServerName *
DocumentRoot "D:/APMServ5.2.0/www/htdocs"
</VirtualHost>
<Directory "D:/APMServ5.2.0/www/htdocs">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>



Options FollowSymLinks
AllowOverride All

改下保存,更名htaccess.txt,重启apache,设置ecshop后台

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
这段代码后我加了一段

<Directory "D:/ecshop">
Options FollowSymLinks
AllowOverride All
</Directory>

还是不行

不是让你加,是让你修改!

你把 环境安装好后,哪个目录是你的根目录???

那就将 虚拟主机 的配置文档 修改成 符合官方要求的配置就OK!

你的修改
  1. <Directory "D:/ecshop">
  2. Options FollowSymLinks
  3. AllowOverride All
  4. </Directory>
复制代码
请确认 d:/ecshop 是不是你的网店根目录!

简单的东西不要搞得那么复杂

看了你贴出来的文档

  1. #APMServ默认虚拟主机
  2. NameVirtualHost *:80
  3. <VirtualHost *:80>
  4. ServerName *
  5. DocumentRoot "D:/APMServ5.2.0/www/htdocs"
  6. </VirtualHost>
  7. <Directory "D:/APMServ5.2.0/www/htdocs">
  8. Options FollowSymLinks IncludesNOEXEC Indexes
  9. DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
  10. AllowOverride None
  11. Order Deny,Allow
  12. Allow from all
  13. </Directory>
复制代码

你把上面修改就行了, 而 D:/APMServ5.2.0/www/htdocs就是你的网站根目录


按照你的说明我直接把站点文件拷到htdocs目录了
参数设置成
AllowOverride All
Order Deny,Allow
Allow from all
未果....

我测试了一下,在2003下同样配置操作是可以实现URL重写,而且在现在的XPpro环境下用IIS+ISAPI ReWrite也可实现,AMP就不行,郁闷....

按我最近的经验,不要随便修改官方给的htaccess文件
修改的不正确会出现 css加载错误,或者找不到文件
在官方没有给出更好修改办法之前,还是用官方给的比较好


我看到你这里
RewriteRule ^category\\([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$category.php?id=$1&brand=$2&page=$3[QSA,L]

官方应该是
RewriteRule ^category-([0-9]+)-b([0-9]+)-([0-9]+)(.*)\.html$category.php?id=$1&brand=$2&page=$3[QSA,L]


你修改成官方的再试试