我想将每个请求重定向到我的public/index.php文件。我试过
RewriteEngine On
RewriteRule ^(.*)$ public/index.php?url=$1
看起来很好但不起作用的代码。我的目标是更改url表单http://example.com/?url=user/profile/2到http://example.com/user/profile/2.我的目录结构是
根
- 公共
- index.php
- 供应商
- .htaccess
- composer.json
- 公共
要处理像http://example.com/user/profile/2
这样的URL,请在.htaccess文件中尝试以下规则集。将htaccess规则文件放入根目录。请确保在测试URL之前清除浏览器缓存。
Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=$1/$2/$3 [L]
或尝试以下规则,请确保一次只尝试以上或以下规则。
以上将适用于不存在的页面,使其适用于任何url(如您在问题中提到的(尝试:
Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !index.php [NC]
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=$1/$2/$3 [L]
以下是解决方案:取消注释(删除#
(apache2中httpd.conf文件中的mod_rewrite.so
模块。也在DocumentRoot "${SRVROOT}/htdocs"
部分下将该文件中的AllowOverride none
更改为AllowOverride All
。
这是.htaccess内容
RewriteEngine on
RewriteRule ^(.*)$ public/index.php?url=$1 [QSA,L]
RewriteRule ^()$ public/index.php?url=$1 [QSA,L]
但是,如果您需要在静态目录中获取静态文件,请在静态目录内添加一个新的.htaccess文件,其中包含RewriteEngine off
内容