1

我需要在哪里编辑并将重写模块放在 elgg 中?

服务器托管在 Goddady 的 II7 上。我需要有关 elgg 错误的帮助

“您需要使用 Elgg 的重写规则配置您的 Web 服务器,然后重试”

到目前为止,这是我通过编辑 htaccess_dist 文件所做的。

My Example:

# Elgg htaccess directives

<Files "htaccess_dist">
    order allow,deny
    deny from all
</Files>

# Don't allow listing directories
Options -Indexes

# Follow symbolic links
Options +FollowSymLinks

# Default handler
DirectoryIndex index.php


############################
# BROWSER CACHING

# The expires module controls the Expires and Cache-Control headers. Elgg sets
# these for dynamically generated files so this is just for static files.
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</IfModule>

# Conditional requests are controlled through Last-Modified and ETag headers.
# Elgg sets these on dynamically generated cacheable files so this is just for
# static files. Note: Apache sends Last-Modified by default on static files so
# I don't think we need to be sending ETag for these files.
<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf|js|css|ico)$">
    FileETag MTime Size
</FilesMatch>


############################
# PHP SETTINGS
<IfModule mod_php5.c>
    # limit the maximum memory consumed by the php script to 64 MB
    php_value memory_limit 64M
    # register_globals is deprecated as of PHP 5.3.0 - disable it for security reasons.
    php_value register_globals 0
    # post_max_size is the maximum size of ALL the data that is POST'ed to php at a time (8 MB)
    php_value post_max_size 8388608
    # upload_max_filesize is the maximum size of a single uploaded file (5 MB)
    php_value upload_max_filesize 5242880
    # on development servers, set to 1 to display errors. Set to 0 on production servers.
    php_value display_errors 0
</IfModule>


############################
# COMPRESSION

# Turn on mod_gzip if available
<IfModule mod_gzip.c>
    mod_gzip_on yes
    mod_gzip_dechunk yes
    mod_gzip_keep_workfiles No
    mod_gzip_minimum_file_size 1000
    mod_gzip_maximum_file_size 1000000
    mod_gzip_maximum_inmem_size 1000000
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/javascript$
    mod_gzip_item_include mime ^application/x-javascript$
    # Exclude old browsers and images since IE has trouble with this
    mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4\..*\["
    mod_gzip_item_exclude mime ^image/.*
</IfModule>

## Apache2 deflate support if available
##
## Important note: mod_headers is required for correct functioning across proxies.
##
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.[0678] no-gzip
    BrowserMatch \bMSIE !no-gzip

<IfModule mod_headers.c>
    Header append Vary User-Agent env=!dont-vary
</IfModule>

    # The following is to disable compression for actions. The reason being is that these
    # may offer direct downloads which (since the initial request comes in as text/html and headers
    # get changed in the script) get double compressed and become unusable when downloaded by IE.
    SetEnvIfNoCase Request_URI action\/* no-gzip dont-vary
    SetEnvIfNoCase Request_URI actions\/* no-gzip dont-vary

</IfModule>


############################
# REWRITE RULES

<IfModule mod_rewrite.c>

RewriteEngine on

# If Elgg is in a subdirectory on your site, you might need to add a RewriteBase line
# containing the path from your site root to elgg's root. e.g. If your site is
# http://example.com/ and Elgg is in http://example.com/sites/elgg/, you might need


#
# My example
RewriteBase http://www.the_website_url.com/elgg/

        <rewrite>
            <rules>
                <rule name="Imported Rule 1">
                    <match url="=&quot;^action/([A-Za-z0-9_/-]+)$" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/action_handler.php?action={R:1}&amp;{QUERY_STRING}" />
                </rule>
                <rule name="Imported Rule 2">
                    <match url="^services/api/([A-Za-z0-9_-]+)/(.*)$" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/service_handler.php?handler={R:1}&amp;request={R:2}&amp;{QUERY_STRING}" 

appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 3">
                    <match url="^export/([A-Za-z]+)/([0-9]+)$" ignoreCase="false" />
                    <action type="Rewrite" url="services/export/handler.php?view={R:1}&amp;guid={R:2}" appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 4">
                    <match url="^export/([A-Za-z]+)/([0-9]+)/$" ignoreCase="false" />
                    <action type="Rewrite" url="services/export/handler.php?view={R:1}&amp;guid={R:2}" appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 5">
                    <match url="^export/([A-Za-z]+)/([0-9]+)/([A-Za-z]+)/([A-Za-z0-9_]+)/$" ignoreCase="false" />
                    <action type="Rewrite" url="services/export/handler.php?view={R:1}&amp;guid={R:2}&amp;type={R:3}&amp;idname={R:4}" 

appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 6">
                    <match url="^_css/css.css$" ignoreCase="false" />
                    <action type="Rewrite" url="_css/css.php" />
                </rule>
                <rule name="Imported Rule 7">
                    <match url="^pg/([A-Za-z0-9_-]+)/(.*)$" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/pagehandler.php?handler={R:1}&amp;page={R:2}&amp;{QUERY_STRING}" 

appendQueryString="false" />
                </rule>
                <rule name="Imported Rule 8">
                    <match url="^pg/([A-Za-z0-9_-]+)$" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/pagehandler.php?handler={R:1}&amp;{QUERY_STRING}" appendQueryString="false" 

/>
                </rule>
                <rule name="Imported Rule 9">
                    <match url="xml-rpc.php" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/xml-rpc_handler.php" />
                </rule>
                <rule name="Imported Rule 10">
                    <match url="mt/mt-xmlrpc.cgi" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/xml-rpc_handler.php" />
                </rule>
                <rule name="Imported Rule 11">
                    <match url="^tag/(.+)/?$" ignoreCase="false" />
                    <action type="Rewrite" url="engine/handlers/pagehandler.php?handler=search&amp;page={R:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>

#
# here, only without the # in front.
#
# If you're not running Elgg in a subdirectory on your site, but still getting lots
# of 404 errors beyond the front page, you could instead try:
#
#RewriteBase /


# If your users receive the message "Sorry, logging in from a different domain is not permitted"
# you must make sure your login form is served from the same hostname as your site pages.
# See http://docs.elgg.org/wiki/Login_token_mismatch_error for more info.
#
# If you must add RewriteRules to change hostname, add them directly below (above all the others)


# In for backwards compatibility
RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1&%{QUERY_STRING} [L]
RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?handler=$1&page=$2&%{QUERY_STRING} [L]
RewriteRule ^tag\/(.+)\/?$ engine/handlers/page_handler.php?handler=search&page=$1 [L]


RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ engine/handlers/action_handler.php?action=$1&%{QUERY_STRING} [L]

RewriteRule ^cache\/(.*)$ engine/handlers/cache_handler.php?request=$1&%{QUERY_STRING} [L]

RewriteRule ^services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/service_handler.php?handler=$1&request=$2&%{QUERY_STRING} [L]

RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/?$ engine/handlers/export_handler.php?view=$1&guid=$2 [L]
RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ engine/handlers/export_handler.php?

view=$1&guid=$2&type=$3&idname=$4 [L]

RewriteRule xml-rpc.php engine/handlers/xml-rpc_handler.php [L]
RewriteRule mt/mt-xmlrpc.cgi engine/handlers/xml-rpc_handler.php [L]


# rule for rewrite module test during install - can be removed after installation
RewriteRule ^rewrite.php$ install.php [L]

# Everything else that isn't a file gets routed through the page handler
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9\_\-]+)$ engine/handlers/page_handler.php?handler=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ engine/handlers/page_handler.php?    handler=$1&page=$2 [QSA,L]


</IfModule>
4

2 回答 2

2

我也在 IIS 7.5 上运行 elgg,并且在设置它时遇到了很多麻烦,直到我找到这篇文章:http: //community.elgg.org/discussion/view/486696/elgg-on-iis-7 这个应该让你去:

1)安装IIS URL Rewrite模块:http ://www.iis.net/download/urlrewrite

2) 在控制面板 > 管理工具中打开 IIS 管理器

3) 右键单击​​您的 Elgg 站点,如果还没有,请选择“切换到功能视图”。

4) 打开 URL 重写功能并在操作菜单中单击“导入规则...”。

5) 浏览配置文件...打开位于 elgg 站点根目录中的“htaccess_dist”文件。

6) 在每条规则下都有一个匹配标签。标签包含正则表达式。大多数正则表达式都会产生错误,因为 IIS 对它们的解释与 Apache 不同。有一个简单的解决方法。在每种情况下,您都会看到“_”删除斜线。它是下划线的转义字符。这对于 IIS 不是必需的,并且会产生错误。确保在下划线之前看到它时将其删除,据我所知,应该有 7 个实例。

8) 在右侧的操作菜单中,点击应用。

它将被保存为 elgg 安装根目录下的 webconfig 文件。而已!Elgg 现在应该可以在 IIS 上运行。

于 2013-11-20T19:19:01.040 回答
1

.htaccess 文件特定于 Apache 服务器。如果要使用 IIS 服务器,则需要将重写规则移植到其格式。

查看 Elgg 1.7 的一些旧规则:http: //docs.elgg.org/wiki/Elgg_and_IIS您需要移植 Elgg 1.8 的规则。

于 2013-09-16T16:02:02.553 回答