1

我想将“ http://www.example.com/abc ”映射到“ http://www.example.com/test/abc ”,以获得最短的路线。我正在为我的用户和内容使用 pyroCMS。
默认的 pyrocms 文件:

# Multiple Environment config  
# Set this to development, staging or production  
# SetEnv PYRO_ENV production  

<IfModule mod_rewrite.c>

    # Make sure directory listing is disabled
    Options +FollowSymLinks -Indexes
    # disable the Apache MultiViews directive if it is enabled on the server. It plays havoc with URL rewriting
    Options -MultiViews
    RewriteEngine on

    # Keep people out of codeigniter directory and Git/Mercurial data
    RedirectMatch 403 ^/.*/(vendor|composer\.json|composer\.lock|system/cms/cache|system/codeigniter|system/cms/config|system/cms/logs|\.git|\.hg).*$

    # Send request via index.php (again, not if its a real file or folder)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    <IfModule mod_php5.c>
        RewriteRule ^(.*)$ index.php/$1 [L]
    </IfModule>

    <IfModule !mod_php5.c>
        RewriteRule ^(.*)$ index.php?/$1 [L]
    </IfModule>

</IfModule>

我想将此规则添加到文件中:

RewriteRule ^([a-z0-9_]+)$ test/$1

将“”改写BASE_URL/abc为“ BASE_URL/test/abc

然而,

我尝试了很多关于把这个 RewriteRule 放在哪里的位置,我的网站一直给出“页面缺失”。

我的 RewriteRule 好吗?我在哪里插入它?

4

2 回答 2

1

PyroCMS 具有内置的模块化路由能力。看这里:

http://docs.pyrocms.com/2.2/manual/developers/basics/modular-routing

如果您的“ http://www.example.com/abcroutes.php ”指的是自定义模块,那么,您可以在模块的配置文件夹中添加一个名为“ ”的文件。文件夹结构应该是这样的:

addones/shared_addons/modules/your-module/config/routes.php

或者甚至您可以编辑config位于的核心路由文件system/cms/config/routes.php并添加此行或任何您的路由规则:

$route['abd'] = 'test/abd';

甚至,在您的控制面板上有一个重定向模块,您可以添加重定向。

于 2013-09-03T20:03:49.200 回答
0

这完全取决于您的规则应该做什么以及它应该如何与您网站的其余部分交互(或不交互)。并且考虑到您的整个 htaccess 文件大部分都被注释掉了代码(我将其删除以使其具有一半可读性),您只想将其放在RewriteEngine On.

但是,由于它盲目地将所有内容路由到test您需要添加一些条件并使其成为类似的东西:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/test%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/test%{REQUEST_URI} -d
RewriteRule ^([a-z0-9_]+)$ test/$1 [L]
于 2013-09-03T14:38:25.860 回答