0
  Options +FollowSymlinks
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^news/([^/]+)  /casino2/newsdetail.php?newsid=$1 [NC]

目前使用上面的代码转换http://localhost/casino2/newsdetail.php?newsid=3http://localhost/casino2/news/3 现在有什么问题我试图从两个查询字符串中创建一个 url,比如如果 url 是localhost/casino2/newsdetail.php?newsid=3& pagename=article url 应该 localhost/casino2/news/article是可以这样做吗?

4

1 回答 1

0

首先,这些规则似乎与您所说的相反 - 即它们将“/localhost/casino2/news/4711”重写为“/casino2/newsdetail.php?newsid=4711”。

如果这是你真正的意思,你需要做的是将两个项目保存到两个变量中,而不是只保存一个变量,如下所示:

RewriteRule ^news/([^/]+)/([^/]+)  /casino2/newsdetail.php?newsid=$1&pagename=$2 [NC]

如果newsid总是1,这样你就不需要将它传递给php,你只需在你的替换中创建它,就像这样

RewriteRule ^news/([^/]+)  /casino2/newsdetail.php?newsid=1&pagename=$1 [NC]

这将创建以下重写:

/news/article -> /casino2/newsdetail.php?newsid=1&pagename=article /news/somethingelse -> /casino2/newsdetail.php?newsdetail=1&pagename=article

但是,如果您希望能够选择不同的 newssid,则需要将其传递到某个地方——作为 URL 的一部分或作为查询字符串。

需要明确的是,规则的应用方式是

RewriteRule "What the URL looks like in the browser" "What my web server expects" 

如果你有问题,我强烈建议你打开很多调试日志,这将是一个很大的帮助。相关的配置行是

RewriteLog /path/to/logfile
RewriteLogLevel 3
于 2012-05-08T10:04:03.027 回答