0

我正在创建一个相当简单的网站。根文件夹中有两个静态页面(Home 和 Portfolio),Wordpress 在/blog. 静态页面包括使用require_once("blog/wp-config.php");.

作品集页面将使用 Javascript(History.JS 或 Crossroads/Hasher)来“推送”代表类别和专辑的 URL。例如,单击左侧的“婚礼”将导致portfolio/weddings,而相册将是portfolio/weddings/jane-jon-smith。这些文件需要在直接访问时可用(我向您发送了专辑的链接)。

现在,我已将其设置为可以从index.php和访问静态页面portfolio.php。我能够使用以下 .htaccess 指令删除文件扩展名:

# Remove .php-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php [L]

但是当我尝试访问诸如 之类的 URL 时portfolio/weddings,我收到 404 错误,因为那不是有效的目录或文件。我一直在搜索,但似乎找不到任何相关的东西,除了如何删除扩展名(我正在工作)。

如何删除文件扩展名并允许直接访问这些“假”目录?

4

2 回答 2

0

Wordpress 使用前端控制器来创建您所谓的“伪目录”。它获取 url 的参数,并相应地将其路由到应用程序控制器以构建视图层或客户端看到的内容。

为了让 Wordpress 相应地路由此请求,您需要为每个投资组合条目提供相应的页面。您可以使用 Wordpress 的默认功能来执行此操作。撤消对 .htaccess 文件的更改,而是将设置中的永久链接设置更改为“帖子名称”。

使用内置的动态投资组合可能比为您的静态页面使用自定义滚动“小部件”更容易。您的静态页面可以设置为显示具有正确 WP 主题的投资组合项目。

Wordpress 的伟大之处在于它可以做的非常先进的事情,只需更改仪表板中的设置即可。我建议您花一些时间研究每个功能可以做什么,并且您将节省大量时间,并且在 WP 于 12 月推出下一个版本时不必对自己的代码进行故障排除。

于 2012-10-20T01:12:31.560 回答
0

在对这个问题发表评论后,我突然想到,也许我应该将任何匹配“portfolio/*”的东西重定向到portfolio.php,然后我可以使用一些函数来处理路径(现在已经成功运行)。

我所做的只是在我在问题中列出的规则之后立即添加这一行:

RewriteRule ^portfolio/([^/]+) /portfolio.php?$1 [NC]
于 2012-10-20T02:15:49.213 回答