Php .htaccess:动态规则并禁止所有
我的项目中有以下体系结构: 应用/ 模块/ 范例/ 控制器/ 观点/ 网/ css/ 样式表 img/ 核心/ index.php 我想将所有REQUET_URI重定向到我的index.php。使用以下.htaccess内容很容易:Php .htaccess:动态规则并禁止所有,php,apache,.htaccess,web,Php,Apache,.htaccess,Web,我的项目中有以下体系结构: 应用/ 模块/ 范例/ 控制器/ 观点/ 网/ css/ 样式表 img/ 核心/ index.php 我想将所有REQUET_URI重定向到我的index.php。使用以下.htaccess内容很容易: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !index\.php RewriteRule ^(.*)$ index.
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/ModuleName/Web/css/style.css
www.domain.ext/ModuleName/my_file.xml=>www.domain.ext/Application/ModuleName/Web/my_file.xml也是如此
等等
但我不知道该怎么做。我想保留所有的目录“拒绝所有”
谢谢:)好吧,假设您希望能够访问
index.php
文件中的slug,您可以这样做:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.*)$ index.php/?request=$1 [L]
您应该使用以下规则:
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]
试试这个
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\u STRING?
它会工作
index.php?Application/Modules/$1/$2.$3 [L]
---------^
因此最好使用查询字符串变量,如:
index.php?page=Application/Modules/$1/$2.$3 [L]
并使用以下方法检索php中的内容:
<?php
$page = $_GET['page']; // Application/Modules/Example/Web/css/style.css
这是我目前拥有的。事实上,我想这样处理:1。检查请求URI是否与文件(如快捷方式)2的语法匹配。如果它不是文件的快捷方式,请重定向到index.php/[URI]在开始时,我使用的是相同的模式,但我无法为文件执行“快捷方式”。URI/ModuleName/css/style.css应该给我一个文件/Application/ModuleName/Web/css/style.css,这是一个不同的要求,您在问题中没有提到。你能通过编辑你的问题来澄清所有的要求吗?我已经编辑了原文:)这只是我想要的一个例子。希望它能帮助你!这是我要找的东西,但却在倒车!www.domain.ext/Example/css/style.css应该重定向到ww.domain.ext/Application/Modules/Example/Web/css/style.css!我会试着自己倒过来;)哦,伙计,很抱歉,我用错误的方式做了规则,现在看看我的编辑