htaccess 使用 url 参数重定向到子文件夹
htaccess redirect to subfolder with url paramethers
我想将每个请求重定向到我的 public/index.php 文件。我试过了
RewriteEngine On
RewriteRule ^(.*)$ public/index.php?url=
看起来不错但无法正常工作的代码。我的目标是改变 url 形式 http://example.com/?url=user/profile/2 to http://example.com/user/profile/2。
我的目录结构是
root
- public
- index.php
- 供应商
- .htaccess
- composer.json
要处理像这样的 URL:http://example.com/user/profile/2
请尝试遵循 .htaccess 文件中的规则集。将您的 htaccess 规则文件放入根目录。请确保在测试您的 URL 之前清除您的浏览器缓存。
Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=// [L]
OR 尝试遵循规则,请确保一次只尝试以上 OR 遵循规则。
以上将适用于不存在的页面,使其适用于任何 url(就像您在问题中提到的那样)尝试:
Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !index\.php [NC]
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=// [L]
解决方法如下:
取消注释(删除 #
) mod_rewrite.so
模块在 httpd.conf 文件中的 apache2(在我的例子中是 c:\Apache24\conf\httpd.conf)文件。还要在该文件的 DocumentRoot "${SRVROOT}/htdocs"
部分下将 AllowOverride none
更改为 AllowOverride All
。
这是 .htaccess 内容
RewriteEngine on
RewriteRule ^(.*)$ public/index.php?url= [QSA,L]
RewriteRule ^()$ public/index.php?url= [QSA,L]
但是,如果您需要在静态目录中获取静态文件,请在静态目录中添加一个新的 .htaccess 文件,内容为 RewriteEngine off
我想将每个请求重定向到我的 public/index.php 文件。我试过了
RewriteEngine On
RewriteRule ^(.*)$ public/index.php?url=
看起来不错但无法正常工作的代码。我的目标是改变 url 形式 http://example.com/?url=user/profile/2 to http://example.com/user/profile/2。 我的目录结构是
root
- public
- index.php
- 供应商
- .htaccess
- composer.json
- public
要处理像这样的 URL:http://example.com/user/profile/2
请尝试遵循 .htaccess 文件中的规则集。将您的 htaccess 规则文件放入根目录。请确保在测试您的 URL 之前清除您的浏览器缓存。
Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=// [L]
OR 尝试遵循规则,请确保一次只尝试以上 OR 遵循规则。
以上将适用于不存在的页面,使其适用于任何 url(就像您在问题中提到的那样)尝试:
Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !index\.php [NC]
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=// [L]
解决方法如下:
取消注释(删除 #
) mod_rewrite.so
模块在 httpd.conf 文件中的 apache2(在我的例子中是 c:\Apache24\conf\httpd.conf)文件。还要在该文件的 DocumentRoot "${SRVROOT}/htdocs"
部分下将 AllowOverride none
更改为 AllowOverride All
。
这是 .htaccess 内容
RewriteEngine on
RewriteRule ^(.*)$ public/index.php?url= [QSA,L]
RewriteRule ^()$ public/index.php?url= [QSA,L]
但是,如果您需要在静态目录中获取静态文件,请在静态目录中添加一个新的 .htaccess 文件,内容为 RewriteEngine off