首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.htaccess将"/book.php?id=1234“重写为"/book/1234”

.htaccess将"/book.php?id=1234“重写为"/book/1234”
EN

Stack Overflow用户
提问于 2012-07-28 07:03:19
回答 2查看 14.6K关注 0票数 0

这是我到目前为止在我的开发环境中所拥有的:

代码语言:javascript
复制
php_value error_log log/php.log
php_value display_errors 1
php_value magic_quotes_gpc Off

RewriteEngine On

# remove slash
RewriteCond %{REQUEST_FILENAME} !-d

# file.php to /file
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteCond %{REQUEST_URI} !^/ajax.php
RewriteRule ^(.+)\.php$ http://localhost/$1 [R=301,L]

# /file to file.php
RewriteRule ^([^/.]+)$ $1.php [L]

我已经尝试了这个规则的很多变体,但我总是得到一个500错误:

代码语言:javascript
复制
RewriteRule ^(.*)$ /book.php?url=$1 [L]

这是我的阿帕奇的error.log:

代码语言:javascript
复制
[Fri Jul 27 19:56:51 2012] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

我错过了什么,为什么是重定向循环?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 06:19:30

你写的RewriteRule似乎在试图做与你的问题标题相反的事情。你说你想要htaccess rewrite /book.php?id=1234 to /book/1234但是你的RewriteRule

代码语言:javascript
复制
RewriteRule ^(.*)$ /book.php?url=$1 [L]

正在添加查询字符串参数。

下面的RewriteRule将重写rewrite /book.php?id=1234 to /book/1234

代码语言:javascript
复制
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^book\.php$ /book/%1? [L]

此外,如果你真的想走另一条路,也就是将/book/1234重写为/book.php?id=1234,那么下面的代码应该这样做:

代码语言:javascript
复制
RewriteRule ^book/(.*)$ /book.php?id=$1 [L]
票数 4
EN

Stack Overflow用户

发布于 2018-10-25 15:18:24

尝尝这个!

代码语言:javascript
复制
# in htaccess file write this
RewriteEngine on 

RewriteRule ^book/([0-9]+) book.php?id=$i

# and in you html or php file call

book.php?id=$i 

分页依据

代码语言:javascript
复制
book/$i 

你的任务完成了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11696718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档