用于URL的Mod_Rewrite

时间:2013-03-01 01:06:06

标签: mod-rewrite

我一直在寻找问题和答案,试图弄清楚如何使这项工作。

到目前为止,我可以更改我的网址,但不会加载网页。

我必须

http://www.mysite.com/index.php?mode=about

让它显示为

http://www.mysite.com/about/

到目前为止,我有以下代码:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^mode=(.*)
RewriteRule ^ http\:\/\/\www.mysite.com\/%1? [R=301,L]

RewriteRule /(.*) /index.php?mode=%1 [L]

我多次改变了一切,没有改变。大多数网站似乎告诉我,我不需要301重定向,但后来我无法工作。

5 个答案:

答案 0 :(得分:0)

对于(您的)示例,一旦您从mysite.com/index.php?mode=about正确路由到mysite.com/about,它现在将查看mysite.com/about/以查找接下来的内容(index.py/index html的/等)。

由于/about/没有任何内容,因此您收到404错误。

我认为你不能使用mod_rewrite来完成你想要实现的目标,而不需要在/about/内进行一些处理,以便在到达目的地后实际显示你想要的页面。

http://www.noupe.com/php/10-mod_rewrite-rules-you-should-know.html

  

记住文件系统始终优先

     

服务器上的文件系统始终优先于   重写的URL。例如,如果您有一个名为“services”的目录   并且在该目录中是一个名为“design.html”的文件,你不能   将网址重定向到“http://domain.com/services”。会发生什么   Apache进入“服务”目录并且没有看到   重写说明。

     

要解决此问题,只需重命名目录(在下面添加下划线)   开始或结束是一种简单的方法。)

答案 1 :(得分:0)

  

我必须

     

http://www.mysite.com/index.php?mode=about

     

让它显示为

     

http://www.mysite.com/about/

人们想要的规则有两种非常常见的规则,您的陈述可以通过两种方式解释,这些方式需要不同的规则。我将在http://www.mysite.com/index.php?mode=about处解释您的声明,即您有一个真实的可操作脚本,但是当用户输入“丑陋”URL时,您希望他们在输入{{1 }}。为此,您将执行以下操作:

http://www.mysite.com/about/

由于存在误解的可能性,最好说明您想要的内容(1)用户将在其浏览器中输入的内容以及(2)您希望为其提供的真实文件。

答案 2 :(得分:0)

我不相信你需要第2和第2行。 3&你好像有%而不是$,试试:

RewriteEngine on
RewriteRule ^([^\/]+) /index.php?mode=$1 [L]

答案 3 :(得分:0)

解决了这个问题。感谢您的帮助。


#< IfModule mod_rewrite.c>

#RewriteCond%{REQUEST_FILENAME}!-f

#RewriteCond%{REQUEST_FILENAME}!-d

#< / IfModule>

选项+ FollowSymLinks

上的RewriteEngine

RewriteRule ^([a-zA-Z0-9 _-] +)$ index.php?mode = $ 1

RewriteRule ^([a-zA-Z0-9 _-] +)/ $ index.php?mode = $ 1

答案 4 :(得分:0)

您可以使用:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME}  -d
RewriteRule  ^.*$  -  [L]

RewriteRule ^([^/]+)/$  /index.php?mode=$1 [L]

开头仍然允许访问其他文件夹。