我一直在寻找问题和答案,试图弄清楚如何使这项工作。
到目前为止,我可以更改我的网址,但不会加载网页。
我必须
http://www.mysite.com/index.php?mode=about
让它显示为
到目前为止,我有以下代码:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^mode=(.*)
RewriteRule ^ http\:\/\/\www.mysite.com\/%1? [R=301,L]
RewriteRule /(.*) /index.php?mode=%1 [L]
我多次改变了一切,没有改变。大多数网站似乎告诉我,我不需要301重定向,但后来我无法工作。
答案 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/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 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]
开头仍然允许访问其他文件夹。