├── .classpath
├── .project
├── .settings
├── org.eclipse.jdt.core.prefs
└── org.eclipse.m2e.core.prefs
├── README.md
├── angular-seo-filter
├── .classpath
├── .project
├── .settings
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.m2e.core.prefs
│ ├── org.eclipse.wst.common.component
│ ├── org.eclipse.wst.common.project.facet.core.xml
│ └── org.eclipse.wst.validation.prefs
├── pom.xml
├── src
│ └── main
│ │ └── java
│ │ └── net
│ │ └── angularseo
│ │ ├── AngularSEOConfig.java
│ │ ├── SEOFilter.java
│ │ ├── crawler
│ │ ├── CachePageManager.java
│ │ ├── CrawlRequest.java
│ │ ├── CrawlTask.java
│ │ ├── CrawlTaskManager.java
│ │ └── Crawler.java
│ │ ├── readme.txt
│ │ └── util
│ │ ├── URLUtils.java
│ │ └── UserAgentUtil.java
└── target
│ └── classes
│ └── net
│ └── angularseo
│ ├── AngularSEOConfig.class
│ ├── SEOFilter.class
│ ├── crawler
│ ├── CachePageManager.class
│ ├── CrawlRequest.class
│ ├── CrawlTask.class
│ ├── CrawlTaskManager.class
│ └── Crawler.class
│ ├── readme.txt
│ └── util
│ ├── URLUtils.class
│ └── UserAgentUtil.class
├── angular-seo-web
├── .classpath
├── .project
├── .settings
│ ├── .jsdtscope
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.m2e.core.prefs
│ ├── org.eclipse.wst.common.component
│ ├── org.eclipse.wst.common.project.facet.core.xml
│ ├── org.eclipse.wst.jsdt.ui.superType.container
│ ├── org.eclipse.wst.jsdt.ui.superType.name
│ └── org.eclipse.wst.validation.prefs
├── pom.xml
├── src
│ └── main
│ │ ├── resources
│ │ └── simplelogger.properties
│ │ └── webapp
│ │ ├── .idea
│ │ ├── .name
│ │ ├── deployment.xml
│ │ ├── encodings.xml
│ │ ├── modules.xml
│ │ ├── scopes
│ │ │ └── scope_settings.xml
│ │ ├── vcs.xml
│ │ ├── webapp.iml
│ │ └── workspace.xml
│ │ ├── ReadMe.txt
│ │ ├── WEB-INF
│ │ └── web.xml
│ │ ├── angular
│ │ ├── angular-sanitize.min.js
│ │ └── angular.min.js
│ │ ├── assets
│ │ ├── css
│ │ │ ├── styles-2.css
│ │ │ ├── styles-3.css
│ │ │ ├── styles-4.css
│ │ │ └── styles.css
│ │ ├── images
│ │ │ └── profile.png
│ │ ├── js
│ │ │ ├── main.js
│ │ │ └── min
│ │ │ │ └── main-min.js
│ │ ├── less
│ │ │ ├── default
│ │ │ │ ├── base.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── responsive.less
│ │ │ │ ├── styles.less
│ │ │ │ └── theme-default.less
│ │ │ ├── theme-2
│ │ │ │ ├── base.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── responsive.less
│ │ │ │ ├── styles.less
│ │ │ │ └── theme-default.less
│ │ │ ├── theme-3
│ │ │ │ ├── base.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── responsive.less
│ │ │ │ ├── styles.less
│ │ │ │ └── theme-default.less
│ │ │ └── theme-4
│ │ │ │ ├── base.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── responsive.less
│ │ │ │ ├── styles.less
│ │ │ │ └── theme-default.less
│ │ └── plugins
│ │ │ ├── bootstrap
│ │ │ ├── css
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ ├── bootstrap-theme.css.map
│ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ └── bootstrap.min.css
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ └── glyphicons-halflings-regular.woff
│ │ │ └── js
│ │ │ │ ├── bootstrap.js
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ └── npm.js
│ │ │ ├── detectmobilebrowser.js
│ │ │ ├── font-awesome
│ │ │ ├── css
│ │ │ │ ├── font-awesome.css
│ │ │ │ └── font-awesome.min.css
│ │ │ ├── fonts
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ └── fontawesome-webfont.woff
│ │ │ ├── less
│ │ │ │ ├── bordered-pulled.less
│ │ │ │ ├── core.less
│ │ │ │ ├── fixed-width.less
│ │ │ │ ├── font-awesome.less
│ │ │ │ ├── icons.less
│ │ │ │ ├── larger.less
│ │ │ │ ├── list.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── path.less
│ │ │ │ ├── rotated-flipped.less
│ │ │ │ ├── spinning.less
│ │ │ │ ├── stacked.less
│ │ │ │ └── variables.less
│ │ │ └── scss
│ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ ├── _core.scss
│ │ │ │ ├── _fixed-width.scss
│ │ │ │ ├── _icons.scss
│ │ │ │ ├── _larger.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _path.scss
│ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ ├── _spinning.scss
│ │ │ │ ├── _stacked.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ └── font-awesome.scss
│ │ │ ├── jquery-1.11.1.min.js
│ │ │ ├── jquery-migrate-1.2.1.min.js
│ │ │ ├── jquery-scrollTo
│ │ │ ├── .gitignore
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── changes.txt
│ │ │ ├── composer.json
│ │ │ ├── demo
│ │ │ │ ├── css
│ │ │ │ │ ├── style.css
│ │ │ │ │ └── style.old.css
│ │ │ │ ├── index.html
│ │ │ │ └── index.old.html
│ │ │ ├── jquery.scrollTo.js
│ │ │ ├── jquery.scrollTo.min.js
│ │ │ ├── scrollTo.jquery.json
│ │ │ └── tests
│ │ │ │ ├── WinMaxY-compat.html
│ │ │ │ ├── WinMaxY-quirks.html
│ │ │ │ ├── WinMaxY-to-iframe-compat.html
│ │ │ │ ├── WinMaxY-to-iframe-quirks.html
│ │ │ │ ├── WinMaxY-with-iframe-compat.html
│ │ │ │ ├── WinMaxY-with-iframe-quirks.html
│ │ │ │ ├── index.html
│ │ │ │ └── test.js
│ │ │ ├── jquery.easing.1.3.js
│ │ │ └── prism
│ │ │ ├── min
│ │ │ ├── prism-min.js
│ │ │ └── prism.css
│ │ │ ├── prism.css
│ │ │ └── prism.js
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ └── js
│ │ └── content.js
└── target
│ ├── classes
│ └── simplelogger.properties
│ └── m2e-wtp
│ └── web-resources
│ └── META-INF
│ ├── MANIFEST.MF
│ └── maven
│ └── net.angularseo
│ └── angular-seo-web
│ ├── pom.properties
│ └── pom.xml
└── pom.xml
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
20 | http://abc.com/#!/about -> http://abc.com/_23_21/about
21 | http://abc.com/#/about -> http://abc.com/_23/about
22 |
23 | When user click the transformed URLs from search engines, the filter will converte them back to the original format.
24 |
25 | # Original AngularJS page source VS Rendered static page source
26 |
27 | Original AngularJS page source code:
28 | ```
29 |
30 | ```
31 | ->
32 | Rendered static page source code:
33 | ```
34 |
0
back to top1
back to top2
back to top3
back to top4
back to top5
back to top6
back to top7
back to top0
back to start1
back to start2
back to start3
back to start4
back to start5
back to start6
back to start7
back to start8
back to start9
back to start10
back to start11
back to start12
back to start13
back to start14
back to start15
back to start0
back to start1
back to start2
back to start3
back to start4
back to start5
back to start6
back to start7
back to start8
back to start9
back to start10
back to start11
back to start12
back to start13
back to start14
back to start15
back to start16
back to start17
back to start18
back to start19
back to start20
back to start21
back to start22
back to start23
back to start24
back to start25
back to start26
back to start27
back to start28
back to start29
back to start