我的项目中有以下架构:
应用程序/ 模块/ 例/ 控制器/ 查看/ 网络/ CSS / style.css文件 IMG / 核心/ 的index.php
我想将所有REQUET_URI重定向到我的index.php。使用以下.htaccess内容很容易:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.*)$ index.php/$1 [L]
但是现在如果我要求www.domain.ext / Application / Modules / Example / Web / css / style.css,它将不起作用。这是我的期望,因为我想重写我的“模块”的URL,如:www.domain.ext / ModuleName / [...] 上一个链接会给我文件www.domain.ext / Application / Modules / ModuleName / Web / [...。]
例如:www.domain.ext / ModuleName / css / style.css会给我文件www.domain.ext / Application / Modules / ModuleName / Web / css / style.css 对于www.domain.ext / ModuleName / my_file.xml =>也是如此。 www.domain.ext /应用/模块/模块名/网络/ my_file.xml 等等..
但我不知道该怎么做。我希望保留所有目录“拒绝所有人”。
谢谢:)
答案 0 :(得分:1)
您应该使用此规则:
RewriteEngine On
RewriteRule !^Application/Modules/ Application/Modules/%{REQUEST_URI} [L,NC]
# not already rewritten
RewriteCond %{ENV:REDIRECT_STATUS} ^$
# not a file
RewriteCond %{REQUEST_FILENAME} !-f
# not a directory
RewriteCond %{REQUEST_FILENAME} !-d
# forward to index.php
RewriteRule ^(.*)$ index.php/$1 [L]
答案 1 :(得分:0)
好吧,假设您希望能够访问index.php
文件中的slug,您可以这样做:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.*)$ index.php/?request=$1 [L]
答案 2 :(得分:0)
试试这个
RewriteEngine on
RewriteBase /
# Rewrite if the file does not exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !index\.php
# Rewrite any assets file
RewriteRule ^(.*)/(.*).(css|js|png|jpe?g|xml|gif)$ index.php/Application/Modules/$1/$2.$3 [L]
RewriteRule ^(.*)/(.*)/(.*).(css|js|png|jpe?g|xml|gif)$ index.php/Application/Modules/$1/$2/$3.$4 [L]
这些规则应该重定向:
www.domain.ext/Example/css/style.css
到
www.domain.ext/Application/Modules/Example/Web/css/style.css
和
www.domain.ext/ModuleName/my_file.xml
到
www.domain.ext/Application/Modules/ModuleName/Web/my_file.xml
编辑:抱歉,这是我的错误,我做错了规则
根据我的测试,这给了我内部500错误:
index.php/Application/Modules/$1/$2.$3 [L]
但如果我使用QUERY_STRING ?
就行了
index.php?Application/Modules/$1/$2.$3 [L]
---------^
因此最好使用QUERY_STRING变量,如:
index.php?page=Application/Modules/$1/$2.$3 [L]
使用以下命令检索php中的内容:
<?php
$page = $_GET['page']; // Application/Modules/Example/Web/css/style.css