我已经审查过这个主题的多个线程,但是它们都在处理多个参数,me是一个非常新的带有.htaccess的,我无法想出如何修改答案以满足我的需要。
我正在使用.htaccess重写URL,除了尝试重写分页URL之外,一切似乎都进行得很顺利。
我的分页url非常简单: blog.php?page=2,但由于某种原因,我不能将url重写到/blog/page/2。当我试图将它路由到那个URL时,我会得到一个“内部服务器错误”。现在,我已经将它重写到/blog-page/2,这是可以的,但我更愿意使用它/blog/page/2。
我的.htaccess文件中有很多事情要做,所以我只会发布重写:
RewriteEngine On
# Full path
#RewriteBase /
# Rewrite all php files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# Rewrite the user profile pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^user/([a-zA-Z0-9_-]+)/$ profile.php?user=$1
# Rewrite the company profile pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^company/([a-zA-Z0-9_-]+)$ employer.php?user=$1
RewriteRule ^company/([a-zA-Z0-9_-]+)/$ employer.php?user=$1
# Rewrite the blog post pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^post/([a-zA-Z0-9_-]+)$ entry.php?id=$1
RewriteRule ^post/([a-zA-Z0-9_-]+)/$ entry.php?id=$1
# Rewrite the job listing pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^job/([a-zA-Z0-9_-]+)$ listing.php?id=$1
RewriteRule ^job/([a-zA-Z0-9_-]+)/$ listing.php?id=$1
# Rewrite blog pagination
RewriteRule ^blog/page/([0-9]+)$ blog.php?page=$1
RewriteRule ^blog/page/([0-9]+)/$ blog.php?page=$1 显然,我遇到的问题是为博客分页的最终重写规则。为什么我不能做它/博客/页/2,但我可以使它/博客-页/2?
我还试图对博客类别和工作类别进行多页.htaccess重写,但我始终得到一个内部错误。我要为博客重写一次,工作类别和博客类别。以下是我对此的看法:
# Rewrite the category queries
RewriteRule ^/category/(.*)/?$ /$.php?cat=$1 [L,QSA]可以让这个分页重写两个不同的页面吗?比如blogs.php和jobs.php?
另外,在我制定重写规则之前,是否有必要继续放置RewriteCond %{REQUEST_FILENAME} !-f?还是一次就够了?
发布于 2013-02-07 07:12:27
您检查了apache错误日志以获得错误消息的信息吗?如果不是的话,无论何时收到500条内部错误消息,这都是第一个开始。
看看apache手册中的RewriteCond。看起来,您希望RewriteCond适用于多个规则,但这不是它的工作方式。RewriteCond只适用于下一个RewriteRule。您可以将多个RewriteCond行链接到一个RewriteRule中,但是如果要将RewriteCond应用于RewriteRules,则必须将其放在每个RewriteRules之前。
好消息是,大多数规则不需要RewriteCond:
RewriteEngine On
# Rewrite all php files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
# Rewrite the user profile pages
RewriteRule ^user/([a-zA-Z0-9_-]+)/?$ profile.php?user=$1 [L]
RewriteCond
# Rewrite the company profile pages
RewriteRule ^company/([a-zA-Z0-9_-]+)/?$ employer.php?user=$1 [L]
# Rewrite the blog post pages
RewriteRule ^post/([a-zA-Z0-9_-]+)/?$ entry.php?id=$1 [L]
# Rewrite the job listing pages
RewriteRule ^job/([a-zA-Z0-9_-]+)/?$ listing.php?id=$1 [L]
# Rewrite blog pagination
RewriteRule ^blog/page/([0-9]+)/?$ blog.php?page=$1 [L]我对你的规则做了一些修改:
RewriteCond %{REQUEST_FILENAME} !-f规则才能为它们提供服务。https://stackoverflow.com/questions/14666140
复制相似问题