Apache 1和1共享主机上的mod_重写

Apache 1和1共享主机上的mod_重写,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正试图做一些URL重写,但我的主机(1和1)和我很少使用.htaccess文件的经验给我带来了麻烦 具体地说,我正在尝试在/news目录下设置.htaccess文件,其中有一个show.php文件。我的目的是将www.example.com/news/blahblah转换为www.example.com/news/show.php?article=blahblah 到目前为止,我的.htaccess文件是(编辑:更新了我的.htaccess,仍然没有解决方案): 重新启动发动机 重写基/ 重

我正试图做一些URL重写,但我的主机(1和1)和我很少使用.htaccess文件的经验给我带来了麻烦

具体地说,我正在尝试在
/news
目录下设置.htaccess文件,其中有一个
show.php
文件。我的目的是将
www.example.com/news/blahblah
转换为
www.example.com/news/show.php?article=blahblah

到目前为止,我的.htaccess文件是(编辑:更新了我的.htaccess,仍然没有解决方案):


重新启动发动机
重写基/
重写规则^/news/([a-z0-9_-]+)$/news/show.php?文章=$1[L,NC]
我已经向我的主机发送了关于如何启用模块的详细信息,他们回答说我应该输入这些行来启用模块

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
</IfModule>

重新启动发动机
重写基/
RewriteCond%{HTTP_HOST}^example\.com$[NC]
重写规则^(.*)$http://www.example.com/$1[L,R=301]
我尝试使用RewriteBase,并将其余的行添加到文件中,但到目前为止没有结果。我不熟悉.htaccess编码,所以我对这些命令不太了解,而且教程似乎也不能回答我的问题,因此非常感谢任何帮助我理解我做错了什么


编辑:我更新了文件夹上的.htaccess。我还将支持文件上载到根文件夹,但没有结果。我仍然收到404未找到的错误。

您添加的行不是必需的。似乎有几件事可能是问题所在。没有加载mod_rewrite,因此永远不会执行
块。或者htaccess文件被忽略

您应该能够判断是否删除了
行,然后尝试转到页面。如果出现500服务器错误,这意味着没有加载mod_rewrite,服务器正在呕吐,因为rewrite语句无法识别。否则,您可以尝试向htaccess文件中添加一些jibberish,如果没有任何错误,那么htaccess文件似乎被忽略了

鉴于您使用的是共享主机,您需要联系1和1支持部门。我不知道他们如何运行共享主机,但如果模块未加载,则他们需要加载重写模块,如:

LoadModule rewrite_module modules/mod_rewrite.so
否则,他们需要使您的文档根目录可重写:

AllowOverride All
以便htaccess文件可以重写URI


编辑:

必须提到的是,我对根文件夹没有.htaccess权限,只有/news文件夹

这就是问题所在。您的规则需要更改为:

RewriteBase /news/
RewriteRule ^([a-z0-9_-]+)$ show.php?article=$1 [L,NC]

您添加的行不是必需的。似乎有几件事可能是问题所在。没有加载mod_rewrite,因此永远不会执行
块。或者htaccess文件被忽略

您应该能够判断是否删除了
行,然后尝试转到页面。如果出现500服务器错误,这意味着没有加载mod_rewrite,服务器正在呕吐,因为rewrite语句无法识别。否则,您可以尝试向htaccess文件中添加一些jibberish,如果没有任何错误,那么htaccess文件似乎被忽略了

鉴于您使用的是共享主机,您需要联系1和1支持部门。我不知道他们如何运行共享主机,但如果模块未加载,则他们需要加载重写模块,如:

LoadModule rewrite_module modules/mod_rewrite.so
否则,他们需要使您的文档根目录可重写:

AllowOverride All
以便htaccess文件可以重写URI


编辑:

必须提到的是,我对根文件夹没有.htaccess权限,只有/news文件夹

这就是问题所在。您的规则需要更改为:

RewriteBase /news/
RewriteRule ^([a-z0-9_-]+)$ show.php?article=$1 [L,NC]

找到了解决办法。我在根文件夹中上传了一个.htaccess文件,其中只包含支持给我的内容,还在新闻文件夹中上传了我自己的.htaccess文件,并且成功了。正确的.htnews文件夹访问权限是:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/

RewriteRule ^([a-z0-9_-]+)$ show.php?article=$1 [L,NC]
</IfModule>

重新启动发动机
编辑基地/新闻/
重写规则^([a-z0-9_-]+)$show.php?文章=$1[L,NC]

找到了解决方案。我在根文件夹中上传了一个.htaccess文件,其中只包含支持给我的内容,还在新闻文件夹中上传了我自己的.htaccess文件,并且成功了。正确的.htnews文件夹访问权限是:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /news/

RewriteRule ^([a-z0-9_-]+)$ show.php?article=$1 [L,NC]
</IfModule>

重新启动发动机
编辑基地/新闻/
重写规则^([a-z0-9_-]+)$show.php?文章=$1[L,NC]

这一切似乎都没有发生。我删除了
标签,得到的只是一个404未找到的错误。添加jibberish时,我得到了500服务器错误。模块似乎已启用,但我做错了什么。我必须提到,我对根文件夹没有.htaccess,只有/news文件夹。似乎所有这些都没有发生。我删除了
标签,得到的只是一个404未找到的错误。添加jibberish时,我得到了500服务器错误。模块似乎已启用,但我做错了什么。我必须提到,我对根文件夹没有.htaccess权限,只有/news文件夹。