Apache htaccess:在提供原始内容时删除子目录表单URL
我有一个这样的URL结构Apache htaccess:在提供原始内容时删除子目录表单URL,apache,.htaccess,mod-rewrite,redirect,expressionengine,Apache,.htaccess,Mod Rewrite,Redirect,Expressionengine,我有一个这样的URL结构 http://domain.com/page/thing1 http://domain.com/page/thing2 http://domain.com/page/thing3 我想: 从URL中删除/page/ 提供来自/page/thing1的内容 我使用的是ExpressionEngine,下面是我从URL中删除index.php的步骤 <IfModule mod_rewrite.c> RewriteEngine On
http://domain.com/page/thing1
http://domain.com/page/thing2
http://domain.com/page/thing3
我想:
- 从URL中删除/page/
- 提供来自/page/thing1的内容
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
重新启动发动机
#删除index.php
重写秒$1!\。(gif | jpe?g | png)$[NC]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$/index.php/$1[L]
如果将所有URL更改为等,那么在重写到index.php文件时,是否可以将页面/添加回
RewriteRule ^(.*)$ /index.php/page/$1 [L]
这些新URL有什么好处? 只需从URI中删除
/page
URL段(即模板组)就会产生大量额外的开销和复杂性,如下所示:
本机ExpressionEngine或第三方是最简单的方法,不需要向.htaccess
文件中添加任何重写规则
但是,这将要求您为每个条目创建一个页面URL,这可能不太理想。在
IfModule
块中现有重写规则的下方追加这些行:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!page/)(.*)$ /page/$1 [L,NC]
您不必通过ModRewrite来执行此操作,这取决于您在EE中访问此数据的方式。这些URL是通过Pages模块创建的吗?或者
page
是一个模板组,而thing1
是一个模板?或者是thing1
,thing2
等等,都是条目URL标题吗?这里有两篇文章可能会有帮助,@DerekHogue现在我已经设置好了,其中页面是一个模板组,内容1和内容2是条目。在这种情况下,-页面模块就是到这里的方法。通过第一段通过URL标题访问单个条目不是一个好的途径。这将假定所有请求都将通过/pages
模板组进行路由,这将破坏许多URI,包括许多核心ExpressionEngine URL。至少,您必须将RewriteRule
与RewriteCond
相结合。