目录位置移动时找不到404网址(htaccess)

时间:2013-07-29 15:52:07

标签: php apache .htaccess

我有这个文档根/var/www/example然后在这个目录中我有一个文件test.php,还有我的另一个项目所以项目的结构看起来像这样

的/ var / WWW /示例

├── .htaccess (Obs)
├── classes  
├── config
├── controllers
├── public
│   ├── admin
│   │   └── index.php 
│   ├── css
│   ├── index.php
│   └── js
├── test.php (Obs! not managed by .htaccess)
└── views

的.htaccess

Options +FollowSymLinks
AddDefaultCharset UTF-8 
RewriteEngine On

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

RewriteRule ^admin[/]?$ /example/admin/login [redirect]
RewriteRule ^admin/([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ public/admin/index.php?page=$1&query=$2 [L]
RewriteRule ^([a-zA-Z]+)/?([a-zA-Z0-9/]*)$ public/index.php?page=$1&query=$2 [L]

我最近将项目从在localhost上运行的MAMP服务器移动到域驱动的服务器。当我尝试我的

  

test.php的

文件可以正常工作,而echo "It works"是有意义的但是当我尝试运行我的网站时却没有。

error.log中

 [Mon Jul 29 18:02:52 2013] [error] [client 83.248.93.217] script '/var/www/example/index.php' not found or unable to stat
 [Mon Jul 29 18:02:52 2013] [error] [client 83.248.93.217] File does not exist:     /var/www/favicon.ico
 [Mon Jul 29 18:03:02 2013] [error] [client 83.248.93.217] File does not exist: /var/www/example/bordsoversikt
 [Mon Jul 29 18:03:02 2013] [error] [client 83.248.93.217] File does not exist: /var/www/favicon.ico

我的控制器按名称将一些网站映射到相应的文件,如此

client_router的内容所有调用都通过index.php作为htaccess然后发送到路由器......

public function initialize_routes() {
$this->routes = array(
    "bordsoversikt" => "page_table_overview",
    "bordsreservation" => "page_table_reservation",
    "reservationsprocess" => "script_reserve_form",
    "registrering" => "page_registration",
    "registreringsprocess" => "script_register_form",
    "lyckadregistrering" => "page_successfull_signup",
    "login" => "page_login",
    "logout" => "script_logout",
    "profil" => "page_home", 
    "klientlogin" => "script_login",
    "profil" => "page_profile",
    "sparaprofil" => "script_edit_profile_changes"
);

我认为我的htaccess文件可能有问题,为什么我发布了内容,或者我的apache2.config文件可能有问题。但我是非常新的配置apache所以我不会尝试发布它的部分,因为我可能会发布不加批判的部分。有人能帮帮我吗。感谢

1 个答案:

答案 0 :(得分:1)

  1. 确保apache可以读取你的htaccess文件(例如在linux上,chmod 644 /var/www/example/.htaccess

  2. 确保您的vhost或服务器配置允许覆盖:

    AllowOverride FileInfo
    

    或更好

    AllowOverride All        
    
  3. 不太可能,但查看服务器/ vhost配置文件以查找名为AccessFilename的命令。默认情况下,这通常是 .htaccess ,但如果它有所不同,那么您需要将其更改为 .htaccess ,或者将文件重命名为指令所指示的内容。< / p>