.htaccess相当于baseurl?

时间:2010-04-01 00:47:46

标签: .htaccess mod-rewrite symfony1

我正在尝试在共享服务器上安装Symfony并尝试复制httpd.conf命令:

# Be sure to only have this line once in your configuration
NameVirtualHost 127.0.0.1:8080

# This is the configuration for your project
Listen 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>
  DocumentRoot "/home/sfproject/web"
  DirectoryIndex index.php
  <Directory "/home/sfproject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /home/sfproject/lib/vendor/symfony/data/web/sf
  <Directory "/home/sfproject/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

我需要使用.htaccess

这样做

使用以下内容在根目录中完成重定向部分:

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^symfony.mysite.ca [nc]
rewriterule ^(.*)$ http://symfony.mysite.ca/web/$1 [r=301,nc] 

对于别名,我尝试过使用:

RewriteBase /

但没有成功。

主要问题是驻留在/ web文件夹中的index.php文件在其图像和脚本路径中使用/ web路径。而不是

href="/css/main.css"  //this would work

它使用

href="/web/css/main.css"  //this doesn't work, already in the /web/ directory!

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

你可以使用......

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

防止引用实际文件的网址被重写,从而阻止通用重写将第二个/web添加到网址中。