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.

我的项目中有以下体系结构:

应用/ 模块/ 范例/ 控制器/ 观点/ 网/ 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/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!我会试着自己倒过来;)哦,伙计,很抱歉,我用错误的方式做了规则,现在看看我的编辑