2014-05-20 90 views
2

我想删除所有网页末尾的“.php” 和 为“example.com/archive?url = ...”部分重写我的动态网址... “使用.htaccess重写动态网址

我走到这一步:

Options -MultiViews 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

这部分工作正常,但现在我也想重写动态网址的网站的以下部分。

旧的URL: example.com/archive?url=test-article

新的URL: example.com/archive/test-article

RewriteRule ^archive/([^/]+)$ archive?url=$1 

这部分不工作。我在这里错过了什么?

它用于插件域,所以这可能与这个问题有关?

编辑1:

我把一些垃圾在我的.htaccess文件,所以我肯定知道它的读取文件时,它产生一个错误。

编辑2:

我禁用多视图如下建议,但现在得到一个内部服务器错误。 这是错误日志:

[2014年5月20日星期二13:12:12] [error] [client(ip)]由于可能的配置错误,请求超过了10个内部重定向的限制。如果需要,使用'LimitInternalRecursion'来增加限制。使用“LogLevel的调试”,以获得回溯

编辑3:我找到了解决办法

我改变最后的规则进入解决了这个问题:

RewriteRule ^news/([^/]+)$ archive?url=$1 
+0

尝试在'^存档/'删除插入符号,如果该作品,尝试使用'^ /存档/'代替 – charmeleon

+2

如何如果您试图从所有网页的末尾删除“php”,可以使用'RewriteRule ^(。*)$ $ 1.html'吗? –

+0

@Joh Lin:我不知道,但它工作。当实际文件是example.com/archive/2014时。PHP然后它加载正确的页面,当我链接到示例/档案/ 2014 – Stan

回答

1

很有可能你已选择MultiViews启用。

您可以禁用,使用:

Options -MultiViews 

随着MultiViews禁用它不会不成为/file.php当你请求/file

编辑:按照修改后的问题,你可以这样做:

RewriteRule ^news/([^/]+)$ archive?url=$1 
+0

启用了Multiviews的消息: “在此服务器上未找到请求的URL/archief/test-article。 然后我按照您的建议禁用了Multiviews,但现在我获得了以下消息: “内部服务器错误:服务器遇到内部错误或配置错误,无法完成您的请求。” – Stan

+0

您是否可以检查您的Apache错误日志以查看是什么导致500? – anubhava

+0

这是错误日志: [ Tue May 20 13:12:12 2014] [错误] [client(ip)]由于可能的配置错误,请求超过了10个内部重定向的限制,必要时使用'LimitInternalRecursion'来增加限制'LogLevel debug'得到一个回溯 – Stan