Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache htaccess:在提供原始内容时删除子目录表单URL_Apache_.htaccess_Mod Rewrite_Redirect_Expressionengine - Fatal编程技术网

Apache htaccess:在提供原始内容时删除子目录表单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

我有一个这样的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

        # 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
相结合。