0

我为我的 API 设置了一个子域api.server.com。我可以在这里运行我的应用程序,但我想在这个子域的文件夹中运行它,特别是 v1.1 。当我尝试这个时,我得到了404.

我已经.htaccess用多条路径修改了我的路径,一直没有高兴地回到根目录。

   RewriteEngine On

   # Some hosts may require you to use the `RewriteBase` directive.
   # If you need to use the `RewriteBase` directive, it should be the
   # absolute physical path to the directory that contains this htaccess file.
   #
   # RewriteBase /
   RewriteBase /all/the/way/back/to/root/www/api/v1/
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php [QSA,L]
   RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]

我已经尝试了这里的所有可能性。

  /all/the/way/back/to/root/www/api/v1/
  /the/way/back/to/root/www/api/v1/
  /way/back/to/root/www/api/v1/
  /back/to/root/www/api/v1/
  /to/root/www/api/v1/
  /root/www/api/v1/
  /www/api/v1/
  /api/v1/
  /v1/

但仍然得到 404。有什么建议可以解决这个问题吗?

这是 www/api/v1 的实际 .htaccess

  RewriteEngine On

  # Some hosts may require you to use the `RewriteBase` directive.
  # If you need to use the `RewriteBase` directive, it should be the
  # absolute physical path to the directory that contains this htaccess file.
  #
  # RewriteBase /
  RewriteBase /api/v1/
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  RewriteRule ^(.*)$ index.php [QSA,L]
  RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]

我想用主域作为api网站

运行以下脚本

  <?php 
  //Gets the document root 
  $root = getenv("DOCUMENT_ROOT") ; 
  Echo $root; 
  ?> 

给我/var/www/domainname.com/web

4

2 回答 2

0

将以下.htaccess代码放入www/api. 去掉.htaccess里面v1

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/v1 [NC]
RewriteRule ^ v1/index.php [L]

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]

我假设这/www是您网站的%{DOCUMENT_ROOT}目录。


由于您以 身份访问您的网站api.server.com/v1,请尝试以下操作web/api/v1/.htaccess

RewriteBase /v1/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
于 2013-10-27T04:13:44.707 回答
0

与其说是解决方案,不如说是解决方法。只是在每条路线之前加上 v1,因此一条路线/items/已更改为/v1/items/

于 2013-11-02T07:35:29.327 回答