.htaccess /controller/action 模式调用两次 public/index.php
.htaccess /controller/action pattern calling twice public/index.php
晚上好,
我已经尽力在标题中描述了问题,并会在此处进一步详细说明:
我有一个使用此 URI 模式的应用程序 /controller/action/parameters(即:register/complete/email:token:any_other_parameter)(在我的情况下参数已展开),只要我仅传递 URI 中的控制器(即:/register)它工作正常,我位于 public 文件夹 /public/index 中的索引未被调用两次。
然而,当为控制器/register/complete或/admin/login指定动作时(例如),public/index。php被调用两次。
这是我在应用根目录 covoit/ 和 covoit/public 文件夹中的 .htaccess。
根.htaccess :
RewriteEngine On
RewriteBase /covoitudiant/
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^%1 [L,NE,R=301]
RewriteRule ^/?([a-zA-Z]+)?/?([a-zA-Z]+)?/?(.*)? public/index.php?controller=&action=¶meters= [L,QSA]
ErrorDocument 404 /covoitudiant/error
/public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我不太明白自己解决它的概念,关于为什么从 URI controller/action 或 controller/action/parameters 接收时 index.php 被调用两次.. .
问题已解决。
丢失的文件再次调用我的 Apache 规则,因此,我的控制器被调用了两次。
这是由于路径错误的音频文件丢失。
另外,为了得到一个.htaccess文件,我使用了Apache的虚拟主机,并根据我的迷你框架重新调整了规则。
如果这也能帮助到其他人,下面是结果:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Handle Authorization Header.
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Handle Trailing Slashes.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# If not Folder or File.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^index.php
RewriteRule ^/?([a-zA-Z]+)?/?([a-zA-Z]+)?/?(.*)? index.php?controller=&action=¶meters= [L,QSA]
</IfModule>
祝你有愉快的一天!
晚上好,
我已经尽力在标题中描述了问题,并会在此处进一步详细说明:
我有一个使用此 URI 模式的应用程序 /controller/action/parameters(即:register/complete/email:token:any_other_parameter)(在我的情况下参数已展开),只要我仅传递 URI 中的控制器(即:/register)它工作正常,我位于 public 文件夹 /public/index 中的索引未被调用两次。
然而,当为控制器/register/complete或/admin/login指定动作时(例如),public/index。php被调用两次。
这是我在应用根目录 covoit/ 和 covoit/public 文件夹中的 .htaccess。
根.htaccess :
RewriteEngine On
RewriteBase /covoitudiant/
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^%1 [L,NE,R=301]
RewriteRule ^/?([a-zA-Z]+)?/?([a-zA-Z]+)?/?(.*)? public/index.php?controller=&action=¶meters= [L,QSA]
ErrorDocument 404 /covoitudiant/error
/public/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我不太明白自己解决它的概念,关于为什么从 URI controller/action 或 controller/action/parameters 接收时 index.php 被调用两次.. .
问题已解决。
丢失的文件再次调用我的 Apache 规则,因此,我的控制器被调用了两次。
这是由于路径错误的音频文件丢失。
另外,为了得到一个.htaccess文件,我使用了Apache的虚拟主机,并根据我的迷你框架重新调整了规则。
如果这也能帮助到其他人,下面是结果:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Handle Authorization Header.
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Handle Trailing Slashes.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# If not Folder or File.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^index.php
RewriteRule ^/?([a-zA-Z]+)?/?([a-zA-Z]+)?/?(.*)? index.php?controller=&action=¶meters= [L,QSA]
</IfModule>
祝你有愉快的一天!