简体   繁体   English

如果URL中未包含index.php,Restler返回404状态代码

[英]Restler returns 404 status code if index.php is not included in URL

First of all, thanks for RESTLER Framework, it is wonderful! 首先,感谢RESTLER Framework,这太好了!

I've set up Restler API on "http://api.odience.net/" . 我已经在“ http://api.odience.net/”上设置了Restler API。 Restler responds with correct response body but returns a 404 status code if I don't include index.php in the url. Restler会使用正确的响应正文进行响应,但是如果我不在URL中包含index.php,则会返回404状态代码。 I've set up the .htaccess file as said in the examples but I can't figure out why it doesn't reply with the correct status code. 我已经按照示例中的说明设置了.htaccess文件,但无法弄清楚为什么它没有使用正确的状态代码进行回复。

Example: 例:

*- Accessing /sandbox/about/products/en.json (and passing some GET variables + calling the about method of sandbox.php) returns a 404 header even if the body data returned is correct! *-访问/sandbox/about/products/en.json (并传递一些GET变量+调用sandbox.php的about方法)将返回404标头,即使返回的主体数据正确无误!

*- If we add the "index.php" file to the url, headers are fine! *-如果我们将“ index.php”文件添加到url中,标题就可以了!

Try: Access /index.php/sandbox/about/products/en.json (with same GET vars) 尝试:访问/index.php/sandbox/about/products/en.json (使用相同的GET vars)

Here is my detailed .HTACCESS file for the Restler root directory: 这是我对Restler根目录的详细.HTACCESS文件:

## Can be commented out if causes errors.
Options +FollowSymLinks
<IfModule mod_rewrite.c>
    RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.
##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your API Directory (just / for root).
##
RewriteBase /

#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the reg server folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /server/|(/[^.]*|\.(php|html?|json|xml|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule ^.*$ index.php [QSA,L]
#

</IfModule>

To secure Restler framework, the Restler library files are not available to the web and the API_ROOT/index.php file includes them automatically with a "require_once" command. 为了保护Restler框架,Restler库文件不可用于Web,并且API_ROOT / index.php文件通过“ require_once”命令自动将它们包括在内。

Please advise how to make this setup work as expected? 请告知如何使此设置按预期工作?

Change %{REQUEST_FILENAME} in .htaccess file to %{DOCUMENT_ROOT}%{REQUEST_FILENAME} (it worked for me) Below is my .htaccess file content. 将.htaccess文件中的%{REQUEST_FILENAME}更改为%{DOCUMENT_ROOT}%{REQUEST_FILENAME}(对我有用)这是我的.htaccess文件内容。 HTH 高温超导

RewriteEngine On 
RewriteBase / 
RewriteRule ^$ index.php [QSA,L] 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [L,QSA] 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM