Php Silex无限重定向路由问题与已安装的ControllerProviders
我正在尝试在Php Silex无限重定向路由问题与已安装的ControllerProviders,php,symfony,redirect,routing,silex,Php,Symfony,Redirect,Routing,Silex,我正在尝试在domain.tld/list下装载一个图书注册表,当除了/list之外没有附加任何内容时,该注册表应打印默认列表,但还提供包括参数的操作,例如: domain.tld/list domain.tld/list/ domain.tld/list?q=search domain.tld/list/?q=search domain.tld/list/following domain.tld/list/following?sort=date domain.tld/list/followi
domain.tld/list
下装载一个图书注册表,当除了/list
之外没有附加任何内容时,该注册表应打印默认列表,但还提供包括参数的操作,例如:
domain.tld/list
domain.tld/list/
domain.tld/list?q=search
domain.tld/list/?q=search
domain.tld/list/following
domain.tld/list/following?sort=date
domain.tld/list/following/?sort=date
...
$app->mount('/', new \Controllers\IndexController());
$app->mount('/list', new \Controllers\BookListController());
$app->mount('/info', new \Controllers\BookInfoController());
...
BookListController.php:
class BookListController implements ControllerProviderInterface
{
public function connect(Application $app)
{
/** @var ControllerCollection $ctrl */
$ctrl = $app['controllers_factory'];
$ctrl->get('/', 'Controllers\BookListController::listAction')->bind('book_list');
$ctrl->get('/following', 'Controllers\BookListController::listAction');
return $ctrl;
}
function listAction(Application $app)
{
return 1;
}
}
问题:
<VirtualHost *:80>
ServerName domain.tld
DocumentRoot /var/www/***/web
<Directory "/var/www/***/web">
Options +FollowSymlinks
AllowOverride All
SSLOptions +StdEnvVars
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
php_flag log_errors on
php_flag display_errors on
php_value error_log /var/log/*****
</VirtualHost>
- 调用domain.tld/list和domain.tld/list/会在带有尾随/和不带尾随/的路由之间进入无限重定向循环
<VirtualHost *:80>
ServerName domain.tld
DocumentRoot /var/www/***/web
<Directory "/var/www/***/web">
Options +FollowSymlinks
AllowOverride All
SSLOptions +StdEnvVars
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
</Directory>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
php_flag log_errors on
php_flag display_errors on
php_value error_log /var/log/*****
</VirtualHost>
ServerName domain.tld
DocumentRoot/var/www/***/web
选项+FollowSymlinks
允许超越所有
发展+标准
要求所有授权
选项-多视图
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-L
重写规则^(.*)$index.php[QSA,L]
发展+标准
上的php_标志日志_错误
php_标志显示上的错误
php\u值错误\u log/var/log/*****
错误配置在哪里?挂载是否可能,或者我是否需要使用其他方法来注册这些路由?只是一个提醒,