htaccess规则在本地和实时服务器上有所不同

时间:2010-09-01 09:37:40

标签: .htaccess mod-rewrite url-rewriting

我有PHP oscommerce网站,其中我使用htaccess进行url重写来隐藏文件名,现在我面临的问题是我的本地服务器无法复制htaccess,因为它应该这样做,它在现场工作完美网站..

有人可能会说明原因是什么?

  

EDITED

下面是我正在使用的htaccess重写规则,为了安全起见,我已将我的原始网站名称替换为“mydomain”:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]  

#INDEX PAGE
#----------
RewriteRule http://www.mydomain.com/index\.html  http://www.mydomain.com/ [R]
RewriteRule http://www.mydomain.com/index\.php  http://www.mydomain.com/ [R]
RewriteRule ^index.html index.php [NC]


#STATIC PAGES
#------------
RewriteRule ^about-us.html information.php?info_id=1 [NC]
RewriteRule ^faqs.html information.php?info_id=8 [NC]
RewriteRule ^contact-us.html contact_us.php?info_id=9 [NC]
RewriteRule ^terms-and-conditions.html information.php?info_id=10 [NC]
RewriteRule ^privacy-policy.html information.php?info_id=3 [NC]

#RewriteRule ^we-design-your-banner-free.html information.php?info_id=11 [NC]
RewriteRule ^vinyl-banner-samples.html vinyl_banner_sample.php [NC]
RewriteRule ^art-specifications.html art_specification.php [NC]
RewriteRule ^sitemap.html sitemap.php [NC]


#checkout - my account pages
#---------------------------
#RewriteRule ^account.html account.php?$1 [NC]
#RewriteRule ^checkout.html checkout.php?$1 [NC]

现在问题是这样的:

我有一个类似的链接:

<a href="/about_us.html" title="About Us" class="footertext_link">About Us</a>

现在在本地机器中,当我点击此链接时,我将导航到网址

http://192.168.1.55/about_us.html

而应该导航到

http://192.168.1.55/mydomain/about_us.html

预期的网址根据其域名在实时服务器上可用,但在本地我找不到网页..

请帮忙

4 个答案:

答案 0 :(得分:4)

您对JapanPro's answer的评论告诉我,您的网站确实位于本地服务器的子目录中,在这种情况下可能是因为它无法正常工作(基于此your other question )是因为URL结构与您的实时服务器不同(它位于根目录,但不在您的本地环境中)。

要解决此问题,您需要将Apache配置为use a name-based virtual host,然后在主机文件中添加与您选择的名称对应的条目。然后,您将使用该域名访问您的网站,并且由于URL结构将与您的实际网站保持一致,因此它应该可以正常工作。

示例:

<强> C:\ Windows \ System32下\驱动程序\等\主机

127.0.0.1 domain.local

<强>的httpd.conf

<VirtualHost *:80>
    ServerName domain.local

    DocumentRoot "C:\wampdir\htdocs\mydomain"

    <Directory "C:\wampdir\htdocs\mydomain">
        Options Indexes FollowSymLinks Includes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

编辑Here's a more in-depth description设置虚拟主机并在新主机条目中进行编辑,希望能够比我更好地解释此过程。

答案 1 :(得分:0)

您在本地xampp,wamp或其他任何地方使用的内容,您可能需要启用htaccess

我认为您正在使用xampp或建议使用它。

How to enable or use .htaccess on Apache Web Servers in Windows:

Using a text editor, open the httpd.conf file. In XAMPP, this file is found in the \apache\conf directory
Locate the following line of code:
#LoadModule rewrite_module modules/mod_rewrite.so

Remove the # from the line as seen below to enable the module:
LoadModule rewrite_module modules/mod_rewrite.so

Save the httpd.conf file and Restart your server
Restart your Apache Server

答案 2 :(得分:0)

根据AccessFileName设置,您的本地Apache安装可能使用其他名称,例如_htaccess。 此外,请确保AllowOverride指令未设置为

可以在.htaccess tutorial

中找到更多文档

答案 3 :(得分:0)

RewriteCond %{HTTP_HOST} ^mydomain.com [NC]

如果主持人[以(^)] mydomain.com开头,

RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]  

将其重写为http://www.mydomain.com/$1

RewriteCond %{HTTP_HOST} !mydomain.com [NC] 

如果主持人不是(!)mydomain.com,