RewriteRule基础和特定路径

时间:2013-11-03 03:39:42

标签: php regex apache .htaccess mod-rewrite

我基本上为自己开发了一个自定义框架,它使用以下.htaccess行从index.php运行。

RewriteRule .* index.php [QSA,L]

我现在开发了一个REST API,我需要通过相同的服务器/ root运行,我尝试将以下URL添加到.htaccess只是为了提示自定义404我已经集成到我的自定义中框架,所以基本上它忽略了这一行,只是尝试使用 RewriteRule 作为我的自定义框架

RewriteRule /api/v1/(.*)$ myAPI.php?request=$1 [QSA,NC,L]

我怎样才能得到它,以便我的API网址不会作为查询传递给我的其他 RewriteRule

我的.htaccess如下所示

Options +FollowSymlinks
RewriteEngine on
RewriteOptions MaxRedirects=10

AddType "text/html; charset=UTF-8" html 
AddType "text/plain; charset=UTF-8" txt

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # if file not exists
    RewriteCond %{REQUEST_FILENAME} !-f

    # if dir not exists
    RewriteCond %{REQUEST_FILENAME} !-d

    # avoid 404s of missing assets in our script
    RewriteCond %{REQUEST_URI} !^.*\.(jpe?g|png|gif|css|js)$ [NC]

    # rest api url
    RewriteRule ^api/v1/(.*)$ /myAPI.php?request=$1 [QSA,NC,L]

    # core framework url rewriting
    RewriteRule .* index.php [QSA,L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

从规则中删除前导斜杠:

RewriteRule ^api/v1/(.*)$ /myAPI.php?request=$1 [QSA,NC,L]
每个目录指令

.htaccess,Apache从RewriteRule URI模式中删除当前目录路径。